Skip to content

Commit 740a2c2

Browse files
author
riastradh
committed
Import drm from Linux 3.15 (commitid 1860e379875dfe7271c649058aeddffe5afd9d0d).
drivers/gpu/drm -> sys/external/bsd/drm2/dist/drm include/drm -> sys/external/bsd/drm2/dist/include/drm include/uapi/drm -> sys/external/bsd/drm2/dist/uapi/drm GPL sources excluded.
1 parent 3f6b43a commit 740a2c2

File tree

471 files changed

+269841
-5576
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

471 files changed

+269841
-5576
lines changed

sys/external/bsd/drm2/dist/drm/Kconfig

Lines changed: 37 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
#
77
menuconfig DRM
88
tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)"
9-
depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && MMU
9+
depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && MMU && HAS_DMA
10+
select HDMI
1011
select I2C
1112
select I2C_ALGOBIT
1213
select DMA_SHARED_BUFFER
@@ -19,6 +20,10 @@ menuconfig DRM
1920
details. You should also select and configure AGP
2021
(/dev/agpgart) support if it is available for your platform.
2122

23+
config DRM_MIPI_DSI
24+
bool
25+
depends on DRM
26+
2227
config DRM_USB
2328
tristate
2429
depends on DRM
@@ -28,11 +33,17 @@ config DRM_USB
2833
config DRM_KMS_HELPER
2934
tristate
3035
depends on DRM
36+
help
37+
CRTC helpers for KMS drivers.
38+
39+
config DRM_KMS_FB_HELPER
40+
bool
41+
depends on DRM_KMS_HELPER
3142
select FB
3243
select FRAMEBUFFER_CONSOLE if !EXPERT
3344
select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
3445
help
35-
FB and CRTC helpers for KMS drivers.
46+
FBDEV helpers for KMS drivers.
3647

3748
config DRM_LOAD_EDID_FIRMWARE
3849
bool "Allow to specify an EDID data set instead of probing for it"
@@ -63,12 +74,15 @@ config DRM_GEM_CMA_HELPER
6374
config DRM_KMS_CMA_HELPER
6475
bool
6576
select DRM_GEM_CMA_HELPER
77+
select DRM_KMS_FB_HELPER
6678
select FB_SYS_FILLRECT
6779
select FB_SYS_COPYAREA
6880
select FB_SYS_IMAGEBLIT
6981
help
7082
Choose this if you need the KMS CMA helper functions
7183

84+
source "drivers/gpu/drm/i2c/Kconfig"
85+
7286
config DRM_TDFX
7387
tristate "3dfx Banshee/Voodoo3+"
7488
depends on DRM && PCI
@@ -93,9 +107,11 @@ config DRM_RADEON
93107
select FB_CFB_IMAGEBLIT
94108
select FW_LOADER
95109
select DRM_KMS_HELPER
110+
select DRM_KMS_FB_HELPER
96111
select DRM_TTM
97112
select POWER_SUPPLY
98113
select HWMON
114+
select BACKLIGHT_CLASS_DEVICE
99115
help
100116
Choose this option if you have an ATI Radeon graphics card. There
101117
are both PCI and AGP versions. You don't need to choose this to
@@ -116,52 +132,7 @@ config DRM_I810
116132
selected, the module will be called i810. AGP support is required
117133
for this driver to work.
118134

119-
config DRM_I915
120-
tristate "Intel 8xx/9xx/G3x/G4x/HD Graphics"
121-
depends on DRM
122-
depends on AGP
123-
depends on AGP_INTEL
124-
# we need shmfs for the swappable backing store, and in particular
125-
# the shmem_readpage() which depends upon tmpfs
126-
select SHMEM
127-
select TMPFS
128-
select DRM_KMS_HELPER
129-
select FB_CFB_FILLRECT
130-
select FB_CFB_COPYAREA
131-
select FB_CFB_IMAGEBLIT
132-
# i915 depends on ACPI_VIDEO when ACPI is enabled
133-
# but for select to work, need to select ACPI_VIDEO's dependencies, ick
134-
select BACKLIGHT_LCD_SUPPORT if ACPI
135-
select BACKLIGHT_CLASS_DEVICE if ACPI
136-
select VIDEO_OUTPUT_CONTROL if ACPI
137-
select INPUT if ACPI
138-
select ACPI_VIDEO if ACPI
139-
select ACPI_BUTTON if ACPI
140-
help
141-
Choose this option if you have a system that has "Intel Graphics
142-
Media Accelerator" or "HD Graphics" integrated graphics,
143-
including 830M, 845G, 852GM, 855GM, 865G, 915G, 945G, 965G,
144-
G35, G41, G43, G45 chipsets and Celeron, Pentium, Core i3,
145-
Core i5, Core i7 as well as Atom CPUs with integrated graphics.
146-
If M is selected, the module will be called i915. AGP support
147-
is required for this driver to work. This driver is used by
148-
the Intel driver in X.org 6.8 and XFree86 4.4 and above. It
149-
replaces the older i830 module that supported a subset of the
150-
hardware in older X.org releases.
151-
152-
Note that the older i810/i815 chipsets require the use of the
153-
i810 driver instead, and the Atom z5xx series has an entirely
154-
different implementation.
155-
156-
config DRM_I915_KMS
157-
bool "Enable modesetting on intel by default"
158-
depends on DRM_I915
159-
help
160-
Choose this option if you want kernel modesetting enabled by default,
161-
and you have a new enough userspace to support this. Running old
162-
userspaces with this enabled will cause pain. Note that this causes
163-
the driver to bind to PCI devices, which precludes loading things
164-
like intelfb.
135+
source "drivers/gpu/drm/i915/Kconfig"
165136

166137
config DRM_MGA
167138
tristate "Matrox g200/g400"
@@ -209,6 +180,24 @@ source "drivers/gpu/drm/mgag200/Kconfig"
209180

210181
source "drivers/gpu/drm/cirrus/Kconfig"
211182

183+
source "drivers/gpu/drm/armada/Kconfig"
184+
185+
source "drivers/gpu/drm/rcar-du/Kconfig"
186+
212187
source "drivers/gpu/drm/shmobile/Kconfig"
213188

189+
source "drivers/gpu/drm/omapdrm/Kconfig"
190+
191+
source "drivers/gpu/drm/tilcdc/Kconfig"
192+
193+
source "drivers/gpu/drm/qxl/Kconfig"
194+
195+
source "drivers/gpu/drm/bochs/Kconfig"
196+
197+
source "drivers/gpu/drm/msm/Kconfig"
198+
214199
source "drivers/gpu/drm/tegra/Kconfig"
200+
201+
source "drivers/gpu/drm/panel/Kconfig"
202+
203+
source "drivers/gpu/drm/bridge/Kconfig"

sys/external/bsd/drm2/dist/drm/Makefile

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,33 @@ ccflags-y := -Iinclude/drm
77
drm-y := drm_auth.o drm_buffer.o drm_bufs.o drm_cache.o \
88
drm_context.o drm_dma.o \
99
drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \
10-
drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
10+
drm_lock.o drm_memory.o drm_stub.o drm_vm.o \
1111
drm_agpsupport.o drm_scatter.o drm_pci.o \
1212
drm_platform.o drm_sysfs.o drm_hashtab.o drm_mm.o \
1313
drm_crtc.o drm_modes.o drm_edid.o \
1414
drm_info.o drm_debugfs.o drm_encoder_slave.o \
15-
drm_trace_points.o drm_global.o drm_prime.o
15+
drm_trace_points.o drm_global.o drm_prime.o \
16+
drm_rect.o drm_vma_manager.o drm_flip_work.o \
17+
drm_plane_helper.o
1618

1719
drm-$(CONFIG_COMPAT) += drm_ioc32.o
1820
drm-$(CONFIG_DRM_GEM_CMA_HELPER) += drm_gem_cma_helper.o
1921
drm-$(CONFIG_PCI) += ati_pcigart.o
22+
drm-$(CONFIG_DRM_PANEL) += drm_panel.o
2023

2124
drm-usb-y := drm_usb.o
2225

23-
drm_kms_helper-y := drm_fb_helper.o drm_crtc_helper.o drm_dp_helper.o
26+
drm_kms_helper-y := drm_crtc_helper.o drm_dp_helper.o drm_probe_helper.o
2427
drm_kms_helper-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o
28+
drm_kms_helper-$(CONFIG_DRM_KMS_FB_HELPER) += drm_fb_helper.o
2529
drm_kms_helper-$(CONFIG_DRM_KMS_CMA_HELPER) += drm_fb_cma_helper.o
2630

2731
obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
2832

2933
CFLAGS_drm_trace_points.o := -I$(src)
3034

3135
obj-$(CONFIG_DRM) += drm.o
36+
obj-$(CONFIG_DRM_MIPI_DSI) += drm_mipi_dsi.o
3237
obj-$(CONFIG_DRM_USB) += drm_usb.o
3338
obj-$(CONFIG_DRM_TTM) += ttm/
3439
obj-$(CONFIG_DRM_TDFX) += tdfx/
@@ -48,6 +53,15 @@ obj-$(CONFIG_DRM_EXYNOS) +=exynos/
4853
obj-$(CONFIG_DRM_GMA500) += gma500/
4954
obj-$(CONFIG_DRM_UDL) += udl/
5055
obj-$(CONFIG_DRM_AST) += ast/
56+
obj-$(CONFIG_DRM_ARMADA) += armada/
57+
obj-$(CONFIG_DRM_RCAR_DU) += rcar-du/
5158
obj-$(CONFIG_DRM_SHMOBILE) +=shmobile/
59+
obj-$(CONFIG_DRM_OMAP) += omapdrm/
60+
obj-$(CONFIG_DRM_TILCDC) += tilcdc/
61+
obj-$(CONFIG_DRM_QXL) += qxl/
62+
obj-$(CONFIG_DRM_BOCHS) += bochs/
63+
obj-$(CONFIG_DRM_MSM) += msm/
5264
obj-$(CONFIG_DRM_TEGRA) += tegra/
5365
obj-y += i2c/
66+
obj-y += panel/
67+
obj-y += bridge/

sys/external/bsd/drm2/dist/drm/ast/Kconfig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
config DRM_AST
22
tristate "AST server chips"
3-
depends on DRM && PCI && EXPERIMENTAL
3+
depends on DRM && PCI
44
select DRM_TTM
55
select FB_SYS_COPYAREA
66
select FB_SYS_FILLRECT
77
select FB_SYS_IMAGEBLIT
88
select DRM_KMS_HELPER
9+
select DRM_KMS_FB_HELPER
910
select DRM_TTM
1011
help
1112
Say yes for experimental AST GPU driver. Do not enable

sys/external/bsd/drm2/dist/drm/ast/ast_drv.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ static int ast_drm_thaw(struct drm_device *dev)
9494
ast_post_gpu(dev);
9595

9696
drm_mode_config_reset(dev);
97-
mutex_lock(&dev->mode_config.mutex);
97+
drm_modeset_lock_all(dev);
9898
drm_helper_resume_force_mode(dev);
99-
mutex_unlock(&dev->mode_config.mutex);
99+
drm_modeset_unlock_all(dev);
100100

101101
console_lock();
102102
ast_fbdev_set_suspend(dev, 0);
@@ -190,15 +190,14 @@ static const struct file_operations ast_fops = {
190190
.unlocked_ioctl = drm_ioctl,
191191
.mmap = ast_mmap,
192192
.poll = drm_poll,
193-
.fasync = drm_fasync,
194193
#ifdef CONFIG_COMPAT
195194
.compat_ioctl = drm_compat_ioctl,
196195
#endif
197196
.read = drm_read,
198197
};
199198

200199
static struct drm_driver driver = {
201-
.driver_features = DRIVER_USE_MTRR | DRIVER_MODESET | DRIVER_GEM,
200+
.driver_features = DRIVER_MODESET | DRIVER_GEM,
202201
.dev_priv_size = 0,
203202

204203
.load = ast_driver_load,
@@ -212,11 +211,10 @@ static struct drm_driver driver = {
212211
.minor = DRIVER_MINOR,
213212
.patchlevel = DRIVER_PATCHLEVEL,
214213

215-
.gem_init_object = ast_gem_init_object,
216214
.gem_free_object = ast_gem_free_object,
217215
.dumb_create = ast_dumb_create,
218216
.dumb_map_offset = ast_dumb_mmap_offset,
219-
.dumb_destroy = ast_dumb_destroy,
217+
.dumb_destroy = drm_gem_dumb_destroy,
220218

221219
};
222220

sys/external/bsd/drm2/dist/drm/ast/ast_drv.h

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ struct ast_private {
9898

9999
struct drm_gem_object *cursor_cache;
100100
uint64_t cursor_cache_gpu_addr;
101+
/* Acces to this cache is protected by the crtc->mutex of the only crtc
102+
* we have. */
101103
struct ttm_bo_kmap_obj cache_kmap;
102104
int next_cursor;
103105
};
@@ -175,7 +177,7 @@ uint8_t ast_get_index_reg_mask(struct ast_private *ast,
175177

176178
static inline void ast_open_key(struct ast_private *ast)
177179
{
178-
ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xA1, 0xFF, 0x04);
180+
ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0x80, 0xA8);
179181
}
180182

181183
#define AST_VIDMEM_SIZE_8M 0x00800000
@@ -239,6 +241,8 @@ struct ast_fbdev {
239241
void *sysram;
240242
int size;
241243
struct ttm_bo_kmap_obj mapping;
244+
int x1, y1, x2, y2; /* dirty rect */
245+
spinlock_t dirty_lock;
242246
};
243247

244248
#define to_ast_crtc(x) container_of(x, struct ast_crtc, base)
@@ -318,11 +322,7 @@ ast_bo(struct ttm_buffer_object *bo)
318322
extern int ast_dumb_create(struct drm_file *file,
319323
struct drm_device *dev,
320324
struct drm_mode_create_dumb *args);
321-
extern int ast_dumb_destroy(struct drm_file *file,
322-
struct drm_device *dev,
323-
uint32_t handle);
324325

325-
extern int ast_gem_init_object(struct drm_gem_object *obj);
326326
extern void ast_gem_free_object(struct drm_gem_object *obj);
327327
extern int ast_dumb_mmap_offset(struct drm_file *file,
328328
struct drm_device *dev,
@@ -344,8 +344,24 @@ int ast_gem_create(struct drm_device *dev,
344344
int ast_bo_pin(struct ast_bo *bo, u32 pl_flag, u64 *gpu_addr);
345345
int ast_bo_unpin(struct ast_bo *bo);
346346

347-
int ast_bo_reserve(struct ast_bo *bo, bool no_wait);
348-
void ast_bo_unreserve(struct ast_bo *bo);
347+
static inline int ast_bo_reserve(struct ast_bo *bo, bool no_wait)
348+
{
349+
int ret;
350+
351+
ret = ttm_bo_reserve(&bo->bo, true, no_wait, false, 0);
352+
if (ret) {
353+
if (ret != -ERESTARTSYS && ret != -EBUSY)
354+
DRM_ERROR("reserve failed %p\n", bo);
355+
return ret;
356+
}
357+
return 0;
358+
}
359+
360+
static inline void ast_bo_unreserve(struct ast_bo *bo)
361+
{
362+
ttm_bo_unreserve(&bo->bo);
363+
}
364+
349365
void ast_ttm_placement(struct ast_bo *bo, int domain);
350366
int ast_bo_push_sysram(struct ast_bo *bo);
351367
int ast_mmap(struct file *filp, struct vm_area_struct *vma);

0 commit comments

Comments
 (0)