diff --git a/config/kernel/linux-rockchip-dev.config b/config/kernel/linux-rockchip-dev.config index 4a7f5895ef..4604a26e16 100644 --- a/config/kernel/linux-rockchip-dev.config +++ b/config/kernel/linux-rockchip-dev.config @@ -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 diff --git a/patch/kernel/rockchip-dev/0001-Readaptation-of-Rockchip-DRM-patches-provided-by-ARM.patch b/patch/kernel/rockchip-dev/0001-Readaptation-of-Rockchip-DRM-patches-provided-by-ARM.patch index 99a8934a18..5f8cc27587 100644 --- a/patch/kernel/rockchip-dev/0001-Readaptation-of-Rockchip-DRM-patches-provided-by-ARM.patch +++ b/patch/kernel/rockchip-dev/0001-Readaptation-of-Rockchip-DRM-patches-provided-by-ARM.patch @@ -1,7 +1,7 @@ -From 5bb5d6eb30a5aefaca07f13897ede815591d1499 Mon Sep 17 00:00:00 2001 +From 24e524279e625a64210165fad83e3a64e8d2f2d7 Mon Sep 17 00:00:00 2001 From: Myy -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 --- - 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 #include #include +#include #include + #include #include - #include -@@ -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 #include #include - +#include + + #include +#include +#include + + #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); }; diff --git a/patch/kernel/rockchip-dev/0002-ARM-dts-rockchip-fix-the-MiQi-board-s-LED-definition.patch b/patch/kernel/rockchip-dev/0002-Adaptation-ARM-dts-rockchip-fix-the-MiQi-board-s-LED.patch similarity index 81% rename from patch/kernel/rockchip-dev/0002-ARM-dts-rockchip-fix-the-MiQi-board-s-LED-definition.patch rename to patch/kernel/rockchip-dev/0002-Adaptation-ARM-dts-rockchip-fix-the-MiQi-board-s-LED.patch index cc1d3c3673..d625624c82 100644 --- a/patch/kernel/rockchip-dev/0002-ARM-dts-rockchip-fix-the-MiQi-board-s-LED-definition.patch +++ b/patch/kernel/rockchip-dev/0002-Adaptation-ARM-dts-rockchip-fix-the-MiQi-board-s-LED.patch @@ -1,7 +1,8 @@ -From ddcb39d4c8efa4bedf645c0ba5aba74a0cd2dcf0 Mon Sep 17 00:00:00 2001 -From: Willy Tarreau -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 +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 Signed-off-by: Willy Tarreau +Signed-off-by: Myy --- 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 diff --git a/patch/kernel/rockchip-dev/0014-Adaptation-of-Shawn-Lin-s-patch-muting-the-MMC-drive.patch.disabled b/patch/kernel/rockchip-dev/0014-Adaptation-of-Shawn-Lin-s-patch-muting-the-MMC-drive.patch.disabled deleted file mode 100644 index 1e6b303a84..0000000000 --- a/patch/kernel/rockchip-dev/0014-Adaptation-of-Shawn-Lin-s-patch-muting-the-MMC-drive.patch.disabled +++ /dev/null @@ -1,41 +0,0 @@ -From bbe8d9e34604f323406723a07fffe789c8dd83a5 Mon Sep 17 00:00:00 2001 -From: Myy -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 ---- - 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 - diff --git a/patch/kernel/rockchip-dev/2004-Few-modifications-after-v4.11-headers-and-signatures.patch b/patch/kernel/rockchip-dev/2004-Few-modifications-after-v4.11-headers-and-signatures.patch new file mode 100644 index 0000000000..68a7668884 --- /dev/null +++ b/patch/kernel/rockchip-dev/2004-Few-modifications-after-v4.11-headers-and-signatures.patch @@ -0,0 +1,61 @@ +From ee8623e8e56fa7e07f39da97f6f1a48ae25328d2 Mon Sep 17 00:00:00 2001 +From: Myy +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 + +* f3ac60671954c8d413532627b1be13a76f394c49 + sched/headers: Move task-stack related APIs from to + + +Signed-off-by: Myy +--- + 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 + #include + #include ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) ++#include ++#include ++#endif + #include + #include + #include +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 +