MiQi DEV kernel configuration and patches update

This commit is contained in:
Igor Pecovnik 2017-03-14 10:16:16 +01:00
parent c07cdf075d
commit 7e34e51921
5 changed files with 177 additions and 147 deletions

View File

@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm 4.10.0 Kernel Configuration
# Linux/arm 4.11.0 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_ARM_HAS_SG_CHAIN=y
@ -126,6 +126,7 @@ CONFIG_FAIR_GROUP_SCHED=y
CONFIG_CFS_BANDWIDTH=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_RDMA=y
CONFIG_CGROUP_FREEZER=y
CONFIG_CPUSETS=y
CONFIG_PROC_PID_CPUSET=y
@ -335,13 +336,6 @@ CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
CONFIG_MQ_IOSCHED_DEADLINE=y
CONFIG_MQ_IOSCHED_NONE=y
# CONFIG_DEFAULT_SQ_DEADLINE is not set
CONFIG_DEFAULT_SQ_NONE=y
CONFIG_DEFAULT_SQ_IOSCHED="none"
# CONFIG_DEFAULT_MQ_DEADLINE is not set
CONFIG_DEFAULT_MQ_NONE=y
CONFIG_DEFAULT_MQ_IOSCHED="none"
CONFIG_ASN1=y
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
@ -435,6 +429,7 @@ CONFIG_ARCH_ROCKCHIP=y
# Processor Type
#
CONFIG_CPU_V7=y
CONFIG_CPU_THUMB_CAPABLE=y
CONFIG_CPU_32v6K=y
CONFIG_CPU_32v7=y
CONFIG_CPU_ABRT_EV7=y
@ -496,6 +491,10 @@ CONFIG_ARM_ERRATA_825619=y
# CONFIG_PCI is not set
# CONFIG_PCI_DOMAINS_GENERIC is not set
# CONFIG_PCI_SYSCALL is not set
#
# DesignWare PCI Core Support
#
# CONFIG_PCCARD is not set
#
@ -1786,6 +1785,7 @@ CONFIG_KEYBOARD_GPIO_POLLED=y
# CONFIG_KEYBOARD_STOWAWAY is not set
CONFIG_KEYBOARD_SUNKBD=y
# CONFIG_KEYBOARD_OMAP4 is not set
CONFIG_KEYBOARD_TM2_TOUCHKEY=m
# CONFIG_KEYBOARD_XTKBD is not set
CONFIG_KEYBOARD_CROS_EC=y
# CONFIG_KEYBOARD_CAP11XX is not set
@ -1912,6 +1912,7 @@ CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set
# CONFIG_TOUCHSCREEN_SX8654 is not set
# CONFIG_TOUCHSCREEN_TPS6507X is not set
CONFIG_TOUCHSCREEN_ZET6223=m
# CONFIG_TOUCHSCREEN_ZFORCE is not set
# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
CONFIG_INPUT_MISC=y
@ -1920,7 +1921,6 @@ CONFIG_INPUT_MISC=y
# CONFIG_INPUT_BMA150 is not set
# CONFIG_INPUT_E3X0_BUTTON is not set
# CONFIG_INPUT_MMA8450 is not set
# CONFIG_INPUT_MPU3050 is not set
# CONFIG_INPUT_GP2A is not set
# CONFIG_INPUT_GPIO_BEEPER is not set
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
@ -2490,6 +2490,7 @@ CONFIG_MFD_CROS_EC_SPI=y
# CONFIG_MFD_MT6397 is not set
# CONFIG_MFD_MENF21BMC is not set
# CONFIG_EZX_PCAP is not set
CONFIG_MFD_CPCAP=m
# CONFIG_MFD_VIPERBOARD is not set
# CONFIG_MFD_RETU is not set
# CONFIG_MFD_PCF50633 is not set
@ -2548,6 +2549,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_ACT8865=y
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_ANATOP is not set
CONFIG_REGULATOR_CPCAP=m
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
CONFIG_REGULATOR_FAN53555=y
@ -2703,11 +2705,13 @@ CONFIG_MALI_GATOR_SUPPORT=y
CONFIG_DRM=y
# CONFIG_DRM_DP_AUX_CHARDEV is not set
CONFIG_DRM_DEBUG_MM=y
CONFIG_DRM_DEBUG_MM_SELFTEST=m
CONFIG_DRM_KMS_HELPER=y
CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_FBDEV_EMULATION=y
# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
CONFIG_DRM_GEM_CMA_HELPER=y
CONFIG_DRM_KMS_CMA_HELPER=y
#
# I2C encoder or helper chips
@ -2762,7 +2766,11 @@ CONFIG_DRM_SIL_SII8620=m
# CONFIG_DRM_STI is not set
# CONFIG_DRM_ARCPGU is not set
# CONFIG_DRM_MXSFB is not set
CONFIG_DRM_TINYDRM=m
CONFIG_TINYDRM_MIPI_DBI=m
CONFIG_TINYDRM_MI0283QT=m
# CONFIG_DRM_LEGACY is not set
CONFIG_DRM_LIB_RANDOM=y
#
# Frame buffer Devices
@ -2780,6 +2788,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
# CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA is not set
# CONFIG_FB_FOREIGN_ENDIAN is not set
CONFIG_FB_SYS_FOPS=y
CONFIG_FB_DEFERRED_IO=y
@ -2914,6 +2923,7 @@ CONFIG_SND_SOC_ROCKCHIP_I2S=y
CONFIG_SND_SOC_ROCKCHIP_SPDIF=y
CONFIG_SND_SOC_ROCKCHIP_MAX98090=y
CONFIG_SND_SOC_ROCKCHIP_RT5645=y
CONFIG_SND_SOC_RK3288_HDMI_ANALOG=m
# CONFIG_SND_SOC_RK3399_GRU_SOUND is not set
# CONFIG_SND_SOC_XTFPGA_I2S is not set
CONFIG_SND_SOC_I2C_AND_SPI=y
@ -2947,7 +2957,9 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_CS53L30 is not set
CONFIG_SND_SOC_HDMI_CODEC=m
# CONFIG_SND_SOC_ES8328 is not set
CONFIG_SND_SOC_ES8328=m
CONFIG_SND_SOC_ES8328_I2C=m
CONFIG_SND_SOC_ES8328_SPI=m
# CONFIG_SND_SOC_GTM601 is not set
# CONFIG_SND_SOC_INNO_RK3036 is not set
CONFIG_SND_SOC_MAX98090=y
@ -3005,6 +3017,7 @@ CONFIG_SND_SOC_TS3A227E=y
# CONFIG_SND_SOC_WM8974 is not set
# CONFIG_SND_SOC_WM8978 is not set
# CONFIG_SND_SOC_WM8985 is not set
CONFIG_SND_SOC_NAU8540=m
# CONFIG_SND_SOC_NAU8810 is not set
# CONFIG_SND_SOC_TPA6130A2 is not set
CONFIG_SND_SIMPLE_CARD_UTILS=y
@ -3751,13 +3764,7 @@ CONFIG_COMMON_CLK_RK808=y
# CONFIG_COMMON_CLK_PWM is not set
# CONFIG_COMMON_CLK_PXA is not set
# CONFIG_COMMON_CLK_PIC32 is not set
# CONFIG_COMMON_CLK_MT2701 is not set
# CONFIG_COMMON_CLK_MT2701_MMSYS is not set
# CONFIG_COMMON_CLK_MT2701_IMGSYS is not set
# CONFIG_COMMON_CLK_MT2701_VDECSYS is not set
# CONFIG_COMMON_CLK_MT2701_HIFSYS is not set
# CONFIG_COMMON_CLK_MT2701_ETHSYS is not set
# CONFIG_COMMON_CLK_MT2701_BDPSYS is not set
CONFIG_COMMON_CLK_VC5=m
#
# Hardware Spinlock drivers
@ -3811,9 +3818,11 @@ CONFIG_ROCKCHIP_IOMMU=y
# Broadcom SoC drivers
#
# CONFIG_SOC_BRCMSTB is not set
CONFIG_ROCKCHIP_GRF=y
CONFIG_ROCKCHIP_PM_DOMAINS=y
# CONFIG_SUNXI_SRAM is not set
# CONFIG_SOC_TI is not set
# CONFIG_SOC_ZTE is not set
CONFIG_PM_DEVFREQ=y
#
@ -4518,6 +4527,7 @@ CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_PAGEALLOC is not set
# CONFIG_PAGE_POISONING is not set
# CONFIG_DEBUG_PAGE_REF is not set
# CONFIG_DEBUG_RODATA_TEST is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
@ -4525,10 +4535,11 @@ CONFIG_HAVE_DEBUG_KMEMLEAK=y
# CONFIG_DEBUG_KMEMLEAK is not set
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_VM is not set
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
# CONFIG_DEBUG_VIRTUAL is not set
# CONFIG_DEBUG_MEMORY_INIT is not set
# CONFIG_DEBUG_PER_CPU_MAPS is not set
# CONFIG_DEBUG_HIGHMEM is not set
# CONFIG_DEBUG_REFCOUNT is not set
# CONFIG_DEBUG_SHIRQ is not set
#
@ -4620,7 +4631,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_PROFILE_ALL_BRANCHES is not set
# CONFIG_STACK_TRACER is not set
CONFIG_BLK_DEV_IO_TRACE=y
# CONFIG_UPROBE_EVENT is not set
# CONFIG_UPROBE_EVENTS is not set
# CONFIG_PROBE_EVENTS is not set
CONFIG_DYNAMIC_FTRACE=y
# CONFIG_FUNCTION_PROFILER is not set
@ -4637,6 +4648,7 @@ CONFIG_TRACING_EVENTS_GPIO=y
#
CONFIG_LKDTM=y
# CONFIG_TEST_LIST_SORT is not set
# CONFIG_TEST_SORT is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_RBTREE_TEST is not set
# CONFIG_INTERVAL_TREE_TEST is not set
@ -4801,6 +4813,7 @@ CONFIG_CRYPTO_SHA512=y
# Ciphers
#
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_AES_TI=m
# CONFIG_CRYPTO_ANUBIS is not set
CONFIG_CRYPTO_ARC4=y
# CONFIG_CRYPTO_BLOWFISH is not set
@ -4915,6 +4928,8 @@ CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAS_DMA=y
# CONFIG_DMA_NOOP_OPS is not set
# CONFIG_DMA_VIRT_OPS is not set
CONFIG_CPU_RMAP=y
CONFIG_DQL=y
CONFIG_GLOB=y
@ -4936,5 +4951,5 @@ CONFIG_SG_POOL=y
CONFIG_ARCH_HAS_SG_CHAIN=y
CONFIG_STACKDEPOT=y
CONFIG_SBITMAP=y
# CONFIG_PARMAN is not set
CONFIG_PRIME_NUMBERS=m
# CONFIG_VIRTUALIZATION is not set

View File

@ -1,7 +1,7 @@
From 5bb5d6eb30a5aefaca07f13897ede815591d1499 Mon Sep 17 00:00:00 2001
From 24e524279e625a64210165fad83e3a64e8d2f2d7 Mon Sep 17 00:00:00 2001
From: Myy <myy@miouyouyou.fr>
Date: Sun, 8 Jan 2017 11:13:57 +0000
Subject: [PATCH 1/2] Readaptation of Rockchip DRM patches provided by ARM
Date: Sun, 12 Mar 2017 17:49:55 +0000
Subject: [PATCH 01/12] Readaptation of Rockchip DRM patches provided by ARM
engineers
These patches aim to add some of the GEM API that is completely
@ -17,30 +17,30 @@ https://www.community.arm.com/graphics/b/blog/posts/improving-arm-mali-drivers-o
Signed-off-by: Myy <myy@miouyouyou.fr>
---
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 9 +++++
drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 20 ++++++++++
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 52 ++++++++++++++++++++++--
drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 13 ++++--
drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 10 +++++
drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c | 21 ++++++++++
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 51 ++++++++++++++++++++++--
drivers/gpu/drm/rockchip/rockchip_drm_gem.h | 9 ++++-
drivers/video/fbdev/core/fbmem.c | 31 +++++++++++++++
include/linux/fb.h | 2 +
include/uapi/drm/rockchip_drm.h | 57 +++++++++++++++++++++++++++
include/uapi/linux/fb.h | 6 +++
8 files changed, 182 insertions(+), 8 deletions(-)
8 files changed, 182 insertions(+), 5 deletions(-)
create mode 100644 include/uapi/drm/rockchip_drm.h
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 2390c85..325669b 100644
index b360e62..0f4ba05 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -21,6 +21,7 @@
@@ -19,6 +19,7 @@
#include <drm/drm_fb_helper.h>
#include <drm/drm_gem_cma_helper.h>
#include <drm/drm_of.h>
+#include <drm/rockchip_drm.h>
#include <linux/dma-mapping.h>
#include <linux/dma-iommu.h>
#include <linux/pm_runtime.h>
#include <linux/module.h>
@@ -268,6 +269,11 @@ static void rockchip_drm_lastclose(struct drm_device *dev)
@@ -262,6 +263,12 @@ static void rockchip_drm_lastclose(struct drm_device *dev)
drm_fb_helper_restore_fbdev_mode_unlocked(&priv->fbdev_helper);
}
@ -48,11 +48,12 @@ index 2390c85..325669b 100644
+ DRM_IOCTL_DEF_DRV(ROCKCHIP_GEM_CREATE, rockchip_gem_create_ioctl,
+ DRM_UNLOCKED | DRM_AUTH),
+};
+
+
static const struct file_operations rockchip_drm_driver_fops = {
.owner = THIS_MODULE,
.open = drm_open,
@@ -293,12 +299,15 @@ static struct drm_driver rockchip_drm_driver = {
@@ -287,12 +294,15 @@ static struct drm_driver rockchip_drm_driver = {
.dumb_destroy = drm_gem_dumb_destroy,
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
@ -63,16 +64,16 @@ index 2390c85..325669b 100644
.gem_prime_vmap = rockchip_gem_prime_vmap,
.gem_prime_vunmap = rockchip_gem_prime_vunmap,
.gem_prime_mmap = rockchip_gem_mmap_buf,
+ .ioctls = rockchip_ioctls,
+ .ioctls = rockchip_ioctls,
+ .num_ioctls = ARRAY_SIZE(rockchip_ioctls),
.fops = &rockchip_drm_driver_fops,
.name = DRIVER_NAME,
.desc = DRIVER_DESC,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
index 8f639c8..69a688d 100644
index 70ad50d..5578958 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_fbdev.c
@@ -35,6 +35,25 @@ static int rockchip_fbdev_mmap(struct fb_info *info,
@@ -35,6 +35,26 @@ static int rockchip_fbdev_mmap(struct fb_info *info,
return rockchip_gem_mmap_buf(private->fbdev_bo, vma);
}
@ -81,88 +82,88 @@ index 8f639c8..69a688d 100644
+ I wonder if this problem isn't already solved in another way...
+ */
+static struct dma_buf *rockchip_fbdev_get_dma_buf(struct fb_info *info) {
+ struct dma_buf *buf = NULL;
+ struct drm_fb_helper *helper = info->par;
+ struct rockchip_drm_private *private = to_drm_private(helper);
+ struct drm_device *dev = helper->dev;
+ struct dma_buf *buf = NULL;
+ struct drm_fb_helper *helper = info->par;
+ struct rockchip_drm_private *private = to_drm_private(helper);
+ struct drm_device *dev = helper->dev;
+
+ if (dev->driver->gem_prime_export) {
+ buf = dev->driver->gem_prime_export(dev, private->fbdev_bo, O_RDWR);
+ if (buf)
+ drm_gem_object_reference(private->fbdev_bo);
+ }
+ if (dev->driver->gem_prime_export) {
+ buf = dev->driver->gem_prime_export(dev, private->fbdev_bo, O_RDWR);
+ if (buf)
+ drm_gem_object_reference(private->fbdev_bo);
+ }
+
+ return buf;
+ return buf;
+}
+
+
static struct fb_ops rockchip_drm_fbdev_ops = {
.owner = THIS_MODULE,
DRM_FB_HELPER_DEFAULT_OPS,
@@ -42,6 +61,7 @@ static struct fb_ops rockchip_drm_fbdev_ops = {
@@ -42,6 +62,7 @@ static struct fb_ops rockchip_drm_fbdev_ops = {
.fb_fillrect = drm_fb_helper_cfb_fillrect,
.fb_copyarea = drm_fb_helper_cfb_copyarea,
.fb_imageblit = drm_fb_helper_cfb_imageblit,
+ .fb_dmabuf_export = rockchip_fbdev_get_dma_buf,
+ .fb_dmabuf_export = rockchip_fbdev_get_dma_buf
};
static int rockchip_drm_fbdev_create(struct drm_fb_helper *helper,
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
index b70f942..df8b69a 100644
index df9e570..e018e59 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
@@ -17,6 +17,11 @@
@@ -16,7 +16,12 @@
#include <drm/drmP.h>
#include <drm/drm_gem.h>
#include <drm/drm_vma_manager.h>
+#include <drm/rockchip_drm.h>
+
#include <linux/iommu.h>
+#include <linux/dma-mapping.h>
+#include <linux/dma-buf.h>
+
#include "rockchip_drm_drv.h"
#include "rockchip_drm_gem.h"
@@ -101,6 +106,31 @@ int rockchip_gem_mmap(struct file *filp, struct vm_area_struct *vma)
return rockchip_drm_gem_object_mmap(obj, vma);
@@ -307,6 +312,31 @@ static void rockchip_gem_release_object(struct rockchip_gem_object *rk_obj)
kfree(rk_obj);
}
+struct drm_gem_object *
+rockchip_gem_prime_import_sg_table(struct drm_device *drm,
+ struct dma_buf_attachment *attach,
+ struct sg_table *sgt) {
+ struct rockchip_gem_object *rk_obj;
+ struct drm_gem_object *obj;
+ struct rockchip_gem_object *rk_obj;
+ struct drm_gem_object *obj;
+
+ if (sgt->nents != 1)
+ return ERR_PTR(-EINVAL);
+ if (sgt->nents != 1)
+ return ERR_PTR(-EINVAL);
+
+ rk_obj = kzalloc(sizeof(*rk_obj), GFP_KERNEL);
+ if (!rk_obj)
+ return ERR_PTR(-ENOMEM);
+ rk_obj = kzalloc(sizeof(*rk_obj), GFP_KERNEL);
+ if (!rk_obj)
+ return ERR_PTR(-ENOMEM);
+
+ obj = &rk_obj->base;
+ obj = &rk_obj->base;
+
+ drm_gem_private_object_init(drm, obj, attach->dmabuf->size);
+ drm_gem_private_object_init(drm, obj, attach->dmabuf->size);
+
+ rk_obj->dma_addr = sg_dma_address(sgt->sgl);
+ rk_obj->sgt = sgt;
+ obj->size = sg_dma_len(sgt->sgl);
+ rk_obj->dma_addr = sg_dma_address(sgt->sgl);
+ rk_obj->sgt = sgt;
+ obj->size = sg_dma_len(sgt->sgl);
+
+ return obj;
+ return obj;
+}
+
struct rockchip_gem_object *
rockchip_gem_create_object(struct drm_device *drm, unsigned int size,
bool alloc_kmap)
@@ -137,14 +167,18 @@ struct rockchip_gem_object *
@@ -343,12 +373,17 @@ struct rockchip_gem_object *
void rockchip_gem_free_object(struct drm_gem_object *obj)
{
struct rockchip_gem_object *rk_obj;
+ if (obj->import_attach)
+ drm_prime_gem_destroy(obj, rk_obj->sgt);
+ else {
- drm_gem_free_mmap_offset(obj);
+ drm_gem_free_mmap_offset(obj);
- rk_obj = to_rockchip_obj(obj);
@ -171,44 +172,34 @@ index b70f942..df8b69a 100644
- rockchip_gem_free_buf(rk_obj);
+ rockchip_gem_free_buf(rk_obj);
- kfree(rk_obj);
+ kfree(rk_obj);
- rockchip_gem_release_object(rk_obj);
+ rockchip_gem_release_object(rk_obj);
+ }
}
/*
@@ -240,6 +274,16 @@ int rockchip_gem_dumb_create(struct drm_file *file_priv,
@@ -444,6 +479,16 @@ int rockchip_gem_dumb_create(struct drm_file *file_priv,
return PTR_ERR_OR_ZERO(rk_obj);
}
+int rockchip_gem_create_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *file_priv) {
+ struct drm_rockchip_gem_create *args = data;
+ struct rockchip_gem_object *rk_obj;
+ struct drm_rockchip_gem_create *args = data;
+ struct rockchip_gem_object *rk_obj;
+
+ rk_obj = rockchip_gem_create_with_handle(file_priv, dev, args->size,
+ rk_obj = rockchip_gem_create_with_handle(file_priv, dev, args->size,
+ &args->handle);
+ return PTR_ERR_OR_ZERO(rk_obj);
+ return PTR_ERR_OR_ZERO(rk_obj);
+}
+
/*
* Allocate a sg_table for this GEM object.
* Note: Both the table's contents, and the sg_table itself must be freed by
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.h b/drivers/gpu/drm/rockchip/rockchip_drm_gem.h
index 18b3488..bfdce3f 100644
index 3f6ea4d..b8fed4d 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.h
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.h
@@ -20,16 +20,17 @@
struct rockchip_gem_object {
struct drm_gem_object base;
unsigned int flags;
-
- void *kvaddr;
+ struct sg_table *sgt;
dma_addr_t dma_addr;
+ void *kvaddr;
unsigned long dma_attrs;
};
@@ -36,8 +36,9 @@ struct rockchip_gem_object {
struct sg_table *rockchip_gem_prime_get_sg_table(struct drm_gem_object *obj);
struct drm_gem_object *
@ -216,21 +207,23 @@ index 18b3488..bfdce3f 100644
- struct sg_table *sgt);
+rockchip_gem_prime_import_sg_table(struct drm_device *dev,
+ struct dma_buf_attachment *attach,
+ struct sg_table *sgt);
+ struct sg_table *sgt);
void *rockchip_gem_prime_vmap(struct drm_gem_object *obj);
void rockchip_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
@@ -52,4 +53,8 @@ int rockchip_gem_dumb_create(struct drm_file *file_priv,
int rockchip_gem_dumb_map_offset(struct drm_file *file_priv,
struct drm_device *dev, uint32_t handle,
uint64_t *offset);
@@ -57,6 +58,10 @@ void rockchip_gem_free_object(struct drm_gem_object *obj);
int rockchip_gem_dumb_create(struct drm_file *file_priv,
struct drm_device *dev,
struct drm_mode_create_dumb *args);
+int rockchip_gem_create_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *file_priv);
+int rockchip_gem_map_offset_ioctl(struct drm_device *dev, void *data,
+ struct drm_file *file_priv);
#endif /* _ROCKCHIP_DRM_GEM_H */
int rockchip_gem_dumb_map_offset(struct drm_file *file_priv,
struct drm_device *dev, uint32_t handle,
uint64_t *offset);
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
index 76c1ad9..46959b1 100644
index 069fe79..d19e98a 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -31,6 +31,7 @@
@ -293,14 +286,14 @@ index 76c1ad9..46959b1 100644
console_lock();
if (!lock_fb_info(info)) {
diff --git a/include/linux/fb.h b/include/linux/fb.h
index a964d07..37a52db 100644
index a964d07..58c9d08 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -320,6 +320,8 @@ struct fb_ops {
/* called at KDB enter and leave time to prepare the console */
int (*fb_debug_enter)(struct fb_info *info);
int (*fb_debug_leave)(struct fb_info *info);
+
+
+ struct dma_buf *(*fb_dmabuf_export)(struct fb_info *info);
};

View File

@ -1,7 +1,8 @@
From ddcb39d4c8efa4bedf645c0ba5aba74a0cd2dcf0 Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@1wt.eu>
Date: Fri, 30 Dec 2016 19:06:59 +0100
Subject: ARM: dts: rockchip: fix the MiQi board's LED definition
From 8e69c52d77837dbd6c5ee8fda2af97ee5c1eacb0 Mon Sep 17 00:00:00 2001
From: Myy <myy@miouyouyou.fr>
Date: Sun, 12 Mar 2017 19:15:12 +0000
Subject: [PATCH 06/12] [Adaptation] ARM: dts: rockchip: fix the MiQi board's
LED definition
The MiQi board's green LED doesn't work at all with the mainline kernel.
There are multiple reasons to this. First, the gpio number is wrong, it
@ -22,20 +23,21 @@ the name will still not work until they're fixed.
Fixes: 162718c (v4.7)
Cc: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Myy <myy@miouyouyou.fr>
---
arch/arm/boot/dts/rk3288-miqi.dts | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
index f751372..2f4c635 100644
index 43728c9..7a42069 100644
--- a/arch/arm/boot/dts/rk3288-miqi.dts
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
@@ -68,11 +68,9 @@
compatible = "gpio-leds";
work {
- gpios = <&gpio7 4 GPIO_ACTIVE_LOW>;
+ gpios = <&gpio7 2 GPIO_ACTIVE_HIGH>;
- gpios = <&gpio7 RK_PA4 GPIO_ACTIVE_LOW>;
+ gpios = <&gpio7 RK_PA2 GPIO_ACTIVE_HIGH>;
label = "miqi:green:user";
- linux,default-trigger = "default-on";
- pinctrl-names = "default";
@ -58,5 +60,5 @@ index f751372..2f4c635 100644
/*
* Default drive strength isn't enough to achieve even
--
2.8.0.rc2.1.gbe9624a
2.10.2

View File

@ -1,41 +0,0 @@
From bbe8d9e34604f323406723a07fffe789c8dd83a5 Mon Sep 17 00:00:00 2001
From: Myy <myy@miouyouyou.fr>
Date: Mon, 30 Jan 2017 23:06:28 +0000
Subject: [PATCH] [PATCH] Adaptation of Shawn Lin's patch muting the MMC driver
This avoid spam from the MMC driver in the kernel logs. However, I'm
wondering if that doesn't hide a real configuration problem...
Original patch URI:
http://lists.infradead.org/pipermail/linux-rockchip/2017-January/013621.html
Signed-off-by: Myy <myy@miouyouyou.fr>
---
drivers/mmc/host/dw_mmc.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 73db085..590bb44 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1179,11 +1179,12 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit)
if ((clock != slot->__clk_old &&
!test_bit(DW_MMC_CARD_NEEDS_POLL, &slot->flags)) ||
force_clkinit) {
- dev_info(&slot->mmc->class_dev,
- "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
- slot->id, host->bus_hz, clock,
- div ? ((host->bus_hz / div) >> 1) :
- host->bus_hz, div);
+ if (!force_clkinit)
+ dev_info(&slot->mmc->class_dev,
+ "Bus speed (slot %d) = %dHz (slot req %dHz, actual %dHZ div = %d)\n",
+ slot->id, host->bus_hz, clock,
+ div ? ((host->bus_hz / div) >> 1) :
+ host->bus_hz, div);
/*
* If card is polling, display the message only
--
2.10.2

View File

@ -0,0 +1,61 @@
From ee8623e8e56fa7e07f39da97f6f1a48ae25328d2 Mon Sep 17 00:00:00 2001
From: Myy <myy@miouyouyou.fr>
Date: Sun, 12 Mar 2017 21:18:20 +0000
Subject: [PATCH] Few modifications after v4.11 headers and signatures changes
This patch is due to the following main kernel changes :
* 11bac80004499ea59f361ef2a5516c84b6eab675
mm, fs: reduce fault, page_mkwrite, and pfn_mkwrite to take only vmf
* 68e21be2916b359fd8afb536c1911dc014cfd03e
sched/headers: Move task->mm handling methods to <linux/sched/mm.h>
* f3ac60671954c8d413532627b1be13a76f394c49
sched/headers: Move task-stack related APIs from <linux/sched.h> to
<linux/sched/task_stack.h>
Signed-off-by: Myy <myy@miouyouyou.fr>
---
drivers/gpu/arm/midgard/mali_kbase.h | 4 ++++
drivers/gpu/arm/midgard/mali_kbase_mem_linux.c | 7 ++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/arm/midgard/mali_kbase.h b/drivers/gpu/arm/midgard/mali_kbase.h
index b5a771f..c4946fe 100644
--- a/drivers/gpu/arm/midgard/mali_kbase.h
+++ b/drivers/gpu/arm/midgard/mali_kbase.h
@@ -35,6 +35,10 @@
#include <linux/mutex.h>
#include <linux/rwsem.h>
#include <linux/sched.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+#include <linux/sched/task_stack.h>
+#include <linux/sched/mm.h>
+#endif
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/vmalloc.h>
diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
index b5b138b..3cc6229 100644
--- a/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
+++ b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
@@ -1710,9 +1710,14 @@ static void kbase_cpu_vm_close(struct vm_area_struct *vma)
KBASE_EXPORT_TEST_API(kbase_cpu_vm_close);
-
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0))
static int kbase_cpu_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
+#else
+static int kbase_cpu_vm_fault(struct vm_fault *vmf)
+{
+ struct vm_area_struct *vma = vmf->vma;
+#endif
struct kbase_cpu_mapping *map = vma->vm_private_data;
pgoff_t rel_pgoff;
size_t i;
--
2.10.2