[{"id":1763219,"web_url":"http://patchwork.ozlabs.org/comment/1763219/","msgid":"<20170905110800.r6e2dh2nj76ycfc7@phenom.ffwll.local>","list_archive_url":null,"date":"2017-09-05T11:08:00","subject":"Re: [PATCHv7 3/3] ARM:drm ivip Intel FPGA Video and Image Processing\n\tSuite","submitter":{"id":1959,"url":"http://patchwork.ozlabs.org/api/people/1959/","name":"Daniel Vetter","email":"daniel@ffwll.ch"},"content":"On Tue, Sep 05, 2017 at 03:12:32PM +0800, Hean-Loong, Ong wrote:\n> From: Ong Hean Loong <hean.loong.ong@intel.com>\n> \n> Driver for Intel FPGA Video and Image Processing Suite Frame Buffer II.\n> The driver only supports the Intel Arria10 devkit and its variants.\n> This driver can be either loaded staticlly or in modules.\n> The OF device tree binding is located at:\n> Documentation/devicetree/bindings/display/altr,vip-fb2.txt\n> \n> Signed-off-by: Ong Hean Loong <hean.loong.ong@intel.com>\n> ---\n> V7:\n> *Fix Comments. Fix indentation in Makefile\n> \n> V6:\n> *Fix Comments. Commit comments need to be discriptive\n> \n> V5:\n> *Fix Comments. Remove dem_kfree and bits per symbol\n> \n> V4:\n> *No fixes.\n> \n> V3:\n> *Changes to fixing drm_simple_pipe\n> *Used drm_fb_cma_get_gem_addr\n> \n> V2:\n> *Adding drm_simple_display_pipe_init\n> \n> ---\n> ---\n>  drivers/gpu/drm/Kconfig               |   2 +\n>  drivers/gpu/drm/Makefile              |   1 +\n>  drivers/gpu/drm/ivip/Kconfig          |  14 +++\n>  drivers/gpu/drm/ivip/Makefile         |   9 ++\n>  drivers/gpu/drm/ivip/intel_vip_conn.c |  96 +++++++++++++++++\n>  drivers/gpu/drm/ivip/intel_vip_core.c | 162 ++++++++++++++++++++++++++++\n>  drivers/gpu/drm/ivip/intel_vip_drv.h  |  52 +++++++++\n>  drivers/gpu/drm/ivip/intel_vip_of.c   | 194 ++++++++++++++++++++++++++++++++++\n>  8 files changed, 530 insertions(+)\n>  create mode 100644 drivers/gpu/drm/ivip/Kconfig\n>  create mode 100644 drivers/gpu/drm/ivip/Makefile\n>  create mode 100644 drivers/gpu/drm/ivip/intel_vip_conn.c\n>  create mode 100644 drivers/gpu/drm/ivip/intel_vip_core.c\n>  create mode 100644 drivers/gpu/drm/ivip/intel_vip_drv.h\n>  create mode 100644 drivers/gpu/drm/ivip/intel_vip_of.c\n> \n> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig\n> index 83cb2a8..38a184d 100644\n> --- a/drivers/gpu/drm/Kconfig\n> +++ b/drivers/gpu/drm/Kconfig\n> @@ -195,6 +195,8 @@ source \"drivers/gpu/drm/nouveau/Kconfig\"\n>  \n>  source \"drivers/gpu/drm/i915/Kconfig\"\n>  \n> +source \"drivers/gpu/drm/ivip/Kconfig\"\n> +\n>  config DRM_VGEM\n>  \ttristate \"Virtual GEM provider\"\n>  \tdepends on DRM\n> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile\n> index 24a066e..4162a0e 100644\n> --- a/drivers/gpu/drm/Makefile\n> +++ b/drivers/gpu/drm/Makefile\n> @@ -58,6 +58,7 @@ obj-$(CONFIG_DRM_AMDGPU)+= amd/amdgpu/\n>  obj-$(CONFIG_DRM_MGA)\t+= mga/\n>  obj-$(CONFIG_DRM_I810)\t+= i810/\n>  obj-$(CONFIG_DRM_I915)\t+= i915/\n> +obj-$(CONFIG_DRM_IVIP) += ivip/\n>  obj-$(CONFIG_DRM_MGAG200) += mgag200/\n>  obj-$(CONFIG_DRM_VC4)  += vc4/\n>  obj-$(CONFIG_DRM_CIRRUS_QEMU) += cirrus/\n> diff --git a/drivers/gpu/drm/ivip/Kconfig b/drivers/gpu/drm/ivip/Kconfig\n> new file mode 100644\n> index 0000000..bf2d995\n> --- /dev/null\n> +++ b/drivers/gpu/drm/ivip/Kconfig\n> @@ -0,0 +1,14 @@\n> +config DRM_IVIP\n> +        tristate \"Intel FGPA Video and Image Processing\"\n> +        depends on DRM && OF\n> +        select DRM_GEM_CMA_HELPER\n> +        select DRM_KMS_HELPER\n> +        select DRM_KMS_FB_HELPER\n> +        select DRM_KMS_CMA_HELPER\n> +        help\n> +\t\t  Choose this option if you have an Intel FPGA Arria 10 system\n> +\t\t  and above with an Intel Display Port IP. This does not support\n> +\t\t  legacy Intel FPGA Cyclone V display port. Currently only single\n> +\t\t  frame buffer is supported. Note that ACPI and X_86 architecture\n> +\t\t  is not supported for Arria10. If M is selected the module will be\n> +\t\t  called ivip.\n> diff --git a/drivers/gpu/drm/ivip/Makefile b/drivers/gpu/drm/ivip/Makefile\n> new file mode 100644\n> index 0000000..cc55b04\n> --- /dev/null\n> +++ b/drivers/gpu/drm/ivip/Makefile\n> @@ -0,0 +1,9 @@\n> +#\n> +# Makefile for the drm device driver.  This driver provides support for the\n> +# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.\n> +\n> +ccflags-y := -Iinclude/drm\n> +\n> +obj-$(CONFIG_DRM_IVIP) += ivip.o\n> +ivip-objs := intel_vip_of.o intel_vip_core.o \\\n> +\tintel_vip_conn.o\n> diff --git a/drivers/gpu/drm/ivip/intel_vip_conn.c b/drivers/gpu/drm/ivip/intel_vip_conn.c\n> new file mode 100644\n> index 0000000..c88df23\n> --- /dev/null\n> +++ b/drivers/gpu/drm/ivip/intel_vip_conn.c\n> @@ -0,0 +1,96 @@\n> +/*\n> + * intel_vip_conn.c -- Intel Video and Image Processing(VIP)\n> + * Frame Buffer II driver\n> + *\n> + * This driver supports the Intel VIP Frame Reader component.\n> + * More info on the hardware can be found in the Intel Video\n> + * and Image Processing Suite User Guide at this address\n> + * http://www.altera.com/literature/ug/ug_vip.pdf.\n> + *\n> + * This program is free software; you can redistribute it and/or modify it\n> + * under the terms and conditions of the GNU General Public License,\n> + * version 2, as published by the Free Software Foundation.\n> + *\n> + * This program is distributed in the hope it will be useful, but WITHOUT\n> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n> + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\n> + * more details.\n> + *\n> + * Authors:\n> + * Ong, Hean-Loong <hean.loong.ong@intel.com>\n> + *\n> + */\n> +\n> +#include <linux/init.h>\n> +#include <linux/kernel.h>\n> +#include <drm/drm_atomic_helper.h>\n> +#include <drm/drm_crtc_helper.h>\n> +#include <drm/drm_encoder_slave.h>\n> +#include <drm/drm_plane_helper.h>\n> +\n> +static enum drm_connector_status\n> +intelvipfb_drm_connector_detect(struct drm_connector *connector, bool force)\n> +{\n> +\treturn connector_status_connected;\n> +}\n> +\n> +static void intelvipfb_drm_connector_destroy(struct drm_connector *connector)\n> +{\n> +\tdrm_connector_unregister(connector);\n> +\tdrm_connector_cleanup(connector);\n> +}\n> +\n> +static const struct drm_connector_funcs intelvipfb_drm_connector_funcs = {\n> +\t.dpms = drm_atomic_helper_connector_dpms,\n> +\t.reset = drm_atomic_helper_connector_reset,\n> +\t.detect = intelvipfb_drm_connector_detect,\n> +\t.fill_modes = drm_helper_probe_single_connector_modes,\n> +\t.destroy = intelvipfb_drm_connector_destroy,\n> +\t.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,\n> +\t.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,\n> +};\n> +\n> +static int intelvipfb_drm_connector_get_modes(struct drm_connector *connector)\n> +{\n> +\tstruct drm_device *drm = connector->dev;\n> +\tint count;\n> +\n> +\tcount = drm_add_modes_noedid(connector, drm->mode_config.max_width,\n> +\t\t\tdrm->mode_config.max_height);\n> +\tdrm_set_preferred_mode(connector, drm->mode_config.max_width,\n> +\t\t\tdrm->mode_config.max_height);\n> +\treturn count;\n> +}\n> +\n> +static const struct drm_connector_helper_funcs\n> +intelvipfb_drm_connector_helper_funcs = {\n> +\t.get_modes = intelvipfb_drm_connector_get_modes,\n> +};\n> +\n> +struct drm_connector *\n> +intelvipfb_conn_setup(struct drm_device *drm)\n> +{\n> +\tstruct drm_connector *conn;\n> +\tint ret;\n> +\n> +\tconn = devm_kzalloc(drm->dev, sizeof(*conn), GFP_KERNEL);\n> +\tif (IS_ERR(conn))\n> +\t\treturn NULL;\n> +\n> +\tret = drm_connector_init(drm, conn, &intelvipfb_drm_connector_funcs,\n> +\t\t\tDRM_MODE_CONNECTOR_DisplayPort);\n> +\tif (ret < 0) {\n> +\t\tdev_err(drm->dev, \"failed to initialize drm connector\\n\");\n> +\t\tret = -ENOMEM;\n> +\t\tgoto error_connector_cleanup;\n> +\t}\n> +\n> +\tdrm_connector_helper_add(conn, &intelvipfb_drm_connector_helper_funcs);\n> +\n> +\treturn conn;\n> +\n> +error_connector_cleanup:\n> +\tdrm_connector_cleanup(conn);\n> +\n> +\treturn NULL;\n> +}\n> diff --git a/drivers/gpu/drm/ivip/intel_vip_core.c b/drivers/gpu/drm/ivip/intel_vip_core.c\n> new file mode 100644\n> index 0000000..6b43c13\n> --- /dev/null\n> +++ b/drivers/gpu/drm/ivip/intel_vip_core.c\n> @@ -0,0 +1,162 @@\n> +/*\n> + * intel_vip_core.c -- Intel Video and Image Processing(VIP)\n> + * Frame Buffer II driver\n> + *\n> + * This driver supports the Intel VIP Frame Reader component.\n> + * More info on the hardware can be found in the Intel Video\n> + * and Image Processing Suite User Guide at this address\n> + * http://www.altera.com/literature/ug/ug_vip.pdf.\n> + *\n> + * This program is free software; you can redistribute it and/or modify it\n> + * under the terms and conditions of the GNU General Public License,\n> + * version 2, as published by the Free Software Foundation.\n> + *\n> + * This program is distributed in the hope it will be useful, but WITHOUT\n> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n> + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\n> + * more details.\n> + *\n> + * Authors:\n> + * Ong, Hean-Loong <hean.loong.ong@intel.com>\n> + *\n> + */\n> +\n> +#include <drm/drmP.h>\n> +#include <drm/drm_atomic.h>\n> +#include <drm/drm_atomic_helper.h>\n> +#include <drm/drm_crtc_helper.h>\n> +#include <drm/drm_fb_helper.h>\n> +#include <drm/drm_fb_cma_helper.h>\n> +#include <drm/drm_gem_cma_helper.h>\n> +#include <drm/drm_plane_helper.h>\n> +#include <drm/drm_simple_kms_helper.h>\n> +\n> +#include <linux/init.h>\n> +#include <linux/kernel.h>\n> +#include <linux/module.h>\n> +\n> +#include \"intel_vip_drv.h\"\n> +\n> +static void intelvipfb_enable(struct drm_simple_display_pipe *pipe,\n> +\t       struct drm_crtc_state *crtc_state)\n> +{\n> +\t/*\n> +\t * The frameinfo variable has to correspond to the size of the VIP Suite\n> +\t * Frame Reader register 7 which will determine the maximum size used\n> +\t * in this frameinfo\n> +\t */\n> +\n> +\tu32 frameinfo;\n> +\tstruct intelvipfb_priv *priv = pipe->plane.dev->dev_private;\n> +\tvoid __iomem *base = priv->base;\n> +\tstruct drm_plane_state *state = pipe->plane.state;\n> +\tdma_addr_t addr;\n> +\n> +\taddr = drm_fb_cma_get_gem_addr(state->fb, state, 0);\n> +\n> +\tdev_info(pipe->plane.dev->dev, \"Address 0x%x\\n\", addr);\n> +\n> +\tframeinfo =\n> +\t\treadl(base + INTELVIPFB_FRAME_READER) & 0x00ffffff;\n> +\twritel(frameinfo, base + INTELVIPFB_FRAME_INFO);\n> +\twritel(addr, base + INTELVIPFB_FRAME_START);\n> +\t/* Finally set the control register to 1 to start streaming */\n> +\twritel(1, base + INTELVIPFB_CONTROL);\n> +}\n> +\n> +static void intelvipfb_disable(struct drm_simple_display_pipe *pipe)\n> +{\n> +\tstruct intelvipfb_priv *priv = pipe->plane.dev->dev_private;\n> +\tvoid __iomem *base = priv->base;\n> +\t/* set the control register to 0 to stop streaming */\n> +\twritel(0, base + INTELVIPFB_CONTROL);\n> +}\n> +\n> +static const struct drm_mode_config_funcs intelvipfb_mode_config_funcs = {\n> +\t.fb_create = drm_fb_cma_create,\n> +\t.atomic_check = drm_atomic_helper_check,\n> +\t.atomic_commit = drm_atomic_helper_commit,\n> +};\n> +\n> +static void intelvipfb_setup_mode_config(struct drm_device *drm)\n> +{\n> +\tdrm_mode_config_init(drm);\n> +\tdrm->mode_config.funcs = &intelvipfb_mode_config_funcs;\n> +}\n> +\n> +static int intelvipfb_pipe_prepare_fb(struct drm_simple_display_pipe *pipe,\n> +\t\t\t\t\tstruct drm_plane_state *plane_state)\n> +{\n> +\treturn drm_fb_cma_prepare_fb(&pipe->plane, plane_state);\n> +}\n> +\n> +\n> +static struct drm_simple_display_pipe_funcs fbpriv_funcs = {\n> +\t.prepare_fb = intelvipfb_pipe_prepare_fb,\n> +\t.enable = intelvipfb_enable,\n> +\t.disable = intelvipfb_disable\n> +};\n> +\n> +int intelvipfb_probe(struct device *dev)\n> +{\n> +\tint retval;\n> +\tstruct drm_device *drm;\n> +\tstruct intelvipfb_priv *fbpriv = dev_get_drvdata(dev);\n> +\tstruct drm_connector *connector;\n> +\tu32 formats[] = {DRM_FORMAT_XRGB8888};\n> +\n> +\tdrm = fbpriv->drm;\n> +\n> +\tdrm->dev_private = fbpriv;\n> +\n> +\tintelvipfb_setup_mode_config(drm);\n> +\n> +\tconnector = intelvipfb_conn_setup(drm);\n> +\tif (!connector) {\n> +\t\tdev_err(drm->dev, \"Connector setup failed\\n\");\n> +\t\tgoto err_mode_config;\n> +\t}\n> +\n> +\tretval = drm_simple_display_pipe_init(drm, &fbpriv->pipe,\n> +\t\t\t&fbpriv_funcs, formats,\n> +\t\t\tARRAY_SIZE(formats), connector);\n> +\tif (retval < 0) {\n> +\t\tdev_err(drm->dev, \"Cannot setup simple display pipe\\n\");\n> +\t\tgoto err_mode_config;\n> +\t}\n> +\n> +\tfbpriv->fbcma = drm_fbdev_cma_init(drm,\n> +\t\t\tdrm->mode_config.preferred_depth,\n> +\t\t\tdrm->mode_config.num_connector);\n> +\n> +\tdrm_mode_config_reset(drm);\n\nThe call to config_reset should be after the call to fbdev_cma_init. This\nwill blow if you enable the fbdev/fbcon stuff, and fbcon picks your\ndriver as the console driver (I suspect you didn't enable one of theset\n.kconfig settings).\n\nOtherwise lgtm, with the above fixed up:\n\nAcked-by: Daniel Vetter <daniel.vetter@ffwll.ch>\n\nAnother one, since there's not entry for MAINTAINERS: How do you plan to\nmaintain this driver?\n-Daniel\n\n> +\n> +\tdrm_dev_register(drm, 0);\n> +\n> +\treturn retval;\n> +\n> +err_mode_config:\n> +\n> +\tdrm_mode_config_cleanup(drm);\n> +\treturn -ENODEV;\n> +}\n> +\n> +int intelvipfb_remove(struct device *dev)\n> +{\n> +\tstruct intelvipfb_priv *fbpriv = dev_get_drvdata(dev);\n> +\tstruct drm_device *drm =  fbpriv->drm;\n> +\n> +\tdrm_dev_unregister(drm);\n> +\n> +\tif (fbpriv->fbcma)\n> +\t\tdrm_fbdev_cma_fini(fbpriv->fbcma);\n> +\n> +\tdrm_mode_config_cleanup(drm);\n> +\tdrm_dev_unref(drm);\n> +\n> +\treturn 0;\n> +}\n> +\n> +MODULE_AUTHOR(\"Ong, Hean-Loong <hean.loong.ong@intel.com>\");\n> +MODULE_DESCRIPTION(\"Intel VIP Frame Buffer II driver\");\n> +MODULE_LICENSE(\"GPL v2\");\n> diff --git a/drivers/gpu/drm/ivip/intel_vip_drv.h b/drivers/gpu/drm/ivip/intel_vip_drv.h\n> new file mode 100644\n> index 0000000..0a3555d\n> --- /dev/null\n> +++ b/drivers/gpu/drm/ivip/intel_vip_drv.h\n> @@ -0,0 +1,52 @@\n> +/*\n> + * Copyright (C) 2017 Intel Corporation.\n> + *\n> + * Intel Video and Image Processing(VIP) Frame Buffer II driver.\n> + *\n> + * This program is free software; you can redistribute it and/or modify it\n> + * under the terms and conditions of the GNU General Public License,\n> + * version 2, as published by the Free Software Foundation.\n> + *\n> + * This program is distributed in the hope it will be useful, but WITHOUT\n> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n> + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\n> + * more details.\n> + *\n> + * You should have received a copy of the GNU General Public License along with\n> + * this program.  If not, see <http://www.gnu.org/licenses/>.\n> + *\n> + * Authors:\n> + * Ong, Hean-Loong <hean.loong.ong@intel.com>\n> + *\n> + */\n> +#ifndef _INTEL_VIP_DRV_H\n> +#define _INTEL_VIP_DRV_H\n> +\n> +#define DRIVER_NAME    \"intelvipfb\"\n> +#define BYTES_PER_PIXEL\t 4\n> +#define CRTC_NUM\t        1\n> +#define CONN_NUM\t        1\n> +\n> +/* control registers */\n> +#define INTELVIPFB_CONTROL\t      0\n> +#define INTELVIPFB_STATUS\t       0x4\n> +#define INTELVIPFB_INTERRUPT\t    0x8\n> +#define INTELVIPFB_FRAME_COUNTER\t0xC\n> +#define INTELVIPFB_FRAME_DROP\t   0x10\n> +#define INTELVIPFB_FRAME_INFO\t   0x14\n> +#define INTELVIPFB_FRAME_START\t  0x18\n> +#define INTELVIPFB_FRAME_READER\t         0x1C\n> +\n> +int intelvipfb_probe(struct device *dev);\n> +int intelvipfb_remove(struct device *dev);\n> +int intelvipfb_setup_crtc(struct drm_device *drm);\n> +struct drm_connector *intelvipfb_conn_setup(struct drm_device *drm);\n> +\n> +struct intelvipfb_priv {\n> +\tstruct drm_simple_display_pipe pipe;\n> +\tstruct drm_fbdev_cma *fbcma;\n> +\tstruct drm_device *drm;\n> +\tvoid    __iomem *base;\n> +};\n> +\n> +#endif\n> diff --git a/drivers/gpu/drm/ivip/intel_vip_of.c b/drivers/gpu/drm/ivip/intel_vip_of.c\n> new file mode 100644\n> index 0000000..b46f789\n> --- /dev/null\n> +++ b/drivers/gpu/drm/ivip/intel_vip_of.c\n> @@ -0,0 +1,194 @@\n> +/*\n> + * intel_vip_of.c -- Intel Video and Image Processing(VIP)\n> + * Frame Buffer II driver\n> + *\n> + * This driver supports the Intel VIP Frame Reader component.\n> + * More info on the hardware can be found in the Intel Video\n> + * and Image Processing Suite User Guide at this address\n> + * http://www.altera.com/literature/ug/ug_vip.pdf.\n> + *\n> + * This program is free software; you can redistribute it and/or modify it\n> + * under the terms and conditions of the GNU General Public License,\n> + * version 2, as published by the Free Software Foundation.\n> + *\n> + * This program is distributed in the hope it will be useful, but WITHOUT\n> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\n> + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for\n> + * more details.\n> + *\n> + * Authors:\n> + * Ong, Hean-Loong <hean.loong.ong@intel.com>\n> + *\n> + */\n> +#include <drm/drm_fb_helper.h>\n> +#include <drm/drm_fb_cma_helper.h>\n> +#include <drm/drm_gem_cma_helper.h>\n> +#include <drm/drm_of.h>\n> +#include <drm/drm_simple_kms_helper.h>\n> +\n> +#include <linux/component.h>\n> +#include <linux/init.h>\n> +#include <linux/kernel.h>\n> +#include <linux/module.h>\n> +#include <linux/platform_device.h>\n> +\n> +#include \"intel_vip_drv.h\"\n> +\n> +DEFINE_DRM_GEM_CMA_FOPS(drm_fops);\n> +\n> +static void intelvipfb_lastclose(struct drm_device *drm)\n> +{\n> +\tstruct intelvipfb_priv *priv = drm->dev_private;\n> +\n> +\tdrm_fbdev_cma_restore_mode(priv->fbcma);\n> +}\n> +\n> +static struct drm_driver intelvipfb_drm = {\n> +\t.driver_features =\n> +\t\t\tDRIVER_MODESET | DRIVER_GEM |\n> +\t\t\tDRIVER_PRIME | DRIVER_ATOMIC,\n> +\t.gem_free_object_unlocked = drm_gem_cma_free_object,\n> +\t.gem_vm_ops = &drm_gem_cma_vm_ops,\n> +\t.dumb_create = drm_gem_cma_dumb_create,\n> +\t.dumb_map_offset = drm_gem_cma_dumb_map_offset,\n> +\t.dumb_destroy = drm_gem_dumb_destroy,\n> +\t.prime_handle_to_fd = drm_gem_prime_handle_to_fd,\n> +\t.prime_fd_to_handle = drm_gem_prime_fd_to_handle,\n> +\t.gem_prime_export = drm_gem_prime_export,\n> +\t.gem_prime_import = drm_gem_prime_import,\n> +\t.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,\n> +\t.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,\n> +\t.gem_prime_vmap = drm_gem_cma_prime_vmap,\n> +\t.gem_prime_vunmap = drm_gem_cma_prime_vunmap,\n> +\t.gem_prime_mmap = drm_gem_cma_prime_mmap,\n> +\t.lastclose = intelvipfb_lastclose,\n> +\t.name = DRIVER_NAME,\n> +\t.date = \"20170729\",\n> +\t.desc = \"Intel FPGA VIP SUITE\",\n> +\t.major = 1,\n> +\t.minor = 0,\n> +\t.ioctls = NULL,\n> +\t.patchlevel = 0,\n> +\t.fops = &drm_fops,\n> +};\n> +\n> +/*\n> + * Setting up information derived from OF Device Tree Nodes\n> + * max-width, max-height, bits per pixel, memory port width\n> + */\n> +\n> +static int intelvipfb_drm_setup(struct device *dev,\n> +\t\t\t\t\tstruct intelvipfb_priv *fbpriv)\n> +{\n> +\tstruct drm_device *drm = fbpriv->drm;\n> +\tstruct device_node *np = dev->of_node;\n> +\tint mem_word_width;\n> +\tint max_h, max_w;\n> +\tint ret;\n> +\n> +\tret = of_property_read_u32(np, \"altr,max-width\", &max_w);\n> +\tif (ret) {\n> +\t\tdev_err(dev,\n> +\t\t\t\"Missing required parameter 'altr,max-width'\");\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tret = of_property_read_u32(np, \"altr,max-height\", &max_h);\n> +\tif (ret) {\n> +\t\tdev_err(dev,\n> +\t\t\t\"Missing required parameter 'altr,max-height'\");\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tret = of_property_read_u32(np, \"altr,mem-port-width\", &mem_word_width);\n> +\tif (ret) {\n> +\t\tdev_err(dev, \"Missing required parameter 'altr,mem-port-width '\");\n> +\t\treturn ret;\n> +\t}\n> +\n> +\tif (!(mem_word_width >= 32 && mem_word_width % 32 == 0)) {\n> +\t\tdev_err(dev,\n> +\t\t\t\"mem-word-width is set to %i. must be >= 32 and multiple of 32.\",\n> +\t\t\t mem_word_width);\n> +\t\treturn -ENODEV;\n> +\t}\n> +\n> +\tdrm->mode_config.min_width = 640;\n> +\tdrm->mode_config.min_height = 480;\n> +\tdrm->mode_config.max_width = max_w;\n> +\tdrm->mode_config.max_height = max_h;\n> +\tdrm->mode_config.preferred_depth = 32;\n> +\n> +\treturn 0;\n> +}\n> +\n> +static int intelvipfb_of_probe(struct platform_device *pdev)\n> +{\n> +\tint retval;\n> +\tstruct resource *reg_res;\n> +\tstruct intelvipfb_priv *fbpriv;\n> +\tstruct device *dev = &pdev->dev;\n> +\tstruct drm_device *drm;\n> +\n> +\tfbpriv = devm_kzalloc(dev, sizeof(*fbpriv), GFP_KERNEL);\n> +\tif (!fbpriv)\n> +\t\treturn -ENOMEM;\n> +\n> +\t/*setup DRM */\n> +\tdrm = drm_dev_alloc(&intelvipfb_drm, dev);\n> +\tif (IS_ERR(drm))\n> +\t\treturn PTR_ERR(drm);\n> +\n> +\tretval = dma_set_mask_and_coherent(drm->dev, DMA_BIT_MASK(32));\n> +\tif (retval)\n> +\t\treturn -ENODEV;\n> +\n> +\tfbpriv->drm = drm;\n> +\n> +\treg_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);\n> +\tif (!reg_res)\n> +\t\treturn -ENOMEM;\n> +\n> +\tfbpriv->base = devm_ioremap_resource(dev, reg_res);\n> +\n> +\tif (IS_ERR(fbpriv->base)) {\n> +\t\tdev_err(dev, \"devm_ioremap_resource failed\\n\");\n> +\t\tretval = PTR_ERR(fbpriv->base);\n> +\t\treturn -ENOMEM;\n> +\t}\n> +\n> +\tintelvipfb_drm_setup(dev, fbpriv);\n> +\n> +\tdev_set_drvdata(dev, fbpriv);\n> +\n> +\treturn intelvipfb_probe(dev);\n> +}\n> +\n> +static int intelvipfb_of_remove(struct platform_device *pdev)\n> +{\n> +\treturn intelvipfb_remove(&pdev->dev);\n> +}\n> +\n> +/*\n> + * The name vip-frame-buffer-2.0 is derived from\n> + * http://www.altera.com/literature/ug/ug_vip.pdf\n> + * frame buffer IP cores section 14\n> + */\n> +\n> +static const struct of_device_id intelvipfb_of_match[] = {\n> +\t{ .compatible = \"altr,vip-frame-buffer-2.0\" },\n> +\t{},\n> +};\n> +\n> +MODULE_DEVICE_TABLE(of, intelvipfb_of_match);\n> +\n> +static struct platform_driver intelvipfb_driver = {\n> +\t.probe = intelvipfb_of_probe,\n> +\t.remove = intelvipfb_of_remove,\n> +\t.driver = {\n> +\t\t.name = DRIVER_NAME,\n> +\t\t.of_match_table = intelvipfb_of_match,\n> +\t},\n> +};\n> +\n> +module_platform_driver(intelvipfb_driver);\n> -- \n> 2.7.4\n> \n> _______________________________________________\n> dri-devel mailing list\n> dri-devel@lists.freedesktop.org\n> https://lists.freedesktop.org/mailman/listinfo/dri-devel","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"K9v8oZRd\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ffwll.ch header.i=@ffwll.ch header.b=\"X8KsP4hh\";\n\tdkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xmkVH5jXFz9s83\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 21:08:39 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dpBie-0008Rx-3X; Tue, 05 Sep 2017 11:08:36 +0000","from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dpBiV-0008KM-6R for linux-arm-kernel@lists.infradead.org;\n\tTue, 05 Sep 2017 11:08:33 +0000","by mail-wm0-x233.google.com with SMTP id h144so3677572wme.0\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tTue, 05 Sep 2017 04:08:05 -0700 (PDT)","from phenom.ffwll.local ([2a02:168:5635:0:39d2:f87e:2033:9f6])\n\tby smtp.gmail.com with ESMTPSA id\n\tg31sm123759edc.44.2017.09.05.04.08.02\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tTue, 05 Sep 2017 04:08:03 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=ZYkXftLZEO9nRjVUbkp4teb8DVmIQP1XTY5fEDD8bOk=;\n\tb=K9v8oZRdgtGdcI\n\tKuJH2dOsIUtmJs3c0KNw8aJpV3aE8DiVQ03pnYQAAZK9uzmEr7MVkMS7GEN47zsu+TpGpaN73AZ5m\n\tOuo6G/WjYKq1tsSm9feaaz0mDKoOH2g0AJNRp9z/I6cjsfmKWFvBLLbe1jZmiQNgmos1CN8DcVRjl\n\tBhTMpm1jmWEuoy3az/ZvjlWazz6ixHzwI0dmd2S7DS0hOKFbv+qKx6g/LcVn2YhYaS5tyC64conFE\n\tQTB46MarfsAKevsBuzxpylHoZdAqwWhfpBE9H37FiTYomt5+D6PaXws3268Q9RsWQso0U2PNTUk58\n\tsT/rToxGzgP0CXwzIQmA==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; \n\th=sender:date:from:to:cc:subject:message-id:mail-followup-to\n\t:references:mime-version:content-disposition:in-reply-to:user-agent; \n\tbh=/meD2fSUE6HgCgQw70W2xAxNDelKU/g4zchqrUqhWtY=;\n\tb=X8KsP4hhozG3xQdFeEAKovo2C1Wdf7qeesKRWhAgKPwmVMZx50RmAQT71oyYLx7dVq\n\tgItRFOZMOQkScr0IUsDlCnEwmc6y+1CxEW17BQp8dvQDSXmDhnnmOrLombmVla3M8LY6\n\t7V+qsz8hOej7546adO4ChUOIXOzM9F98Oa6dk="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:sender:date:from:to:cc:subject:message-id\n\t:mail-followup-to:references:mime-version:content-disposition\n\t:in-reply-to:user-agent;\n\tbh=/meD2fSUE6HgCgQw70W2xAxNDelKU/g4zchqrUqhWtY=;\n\tb=Il6JBOHDOEZt45hBb/oKT6z/1KWYNAIdTHGKeP36y7otH/7ltKyONkpEKmKKxnEgX6\n\tKl/rQyghwDMLT4IT8jz4durjQAf2obLDREcVuj4cmYA+Dez7nPfPvRJ6/EUuaRkXR2OJ\n\tGA4FkYtxPuVTN5iCPPUO3VLStBM8jZXiUMj0FuVXT+B49qna8e2RBx466DGGVW+4VhWf\n\tHpuI+K8NEP5cwSdVTduicKsFfin4On+kAtdrjCrR3+OJvmDCP9kYz2hV97o8ciJPE8h1\n\tYt8bdmpnASHUIz+LFF3Zrkyxr6NSAS5Q/kckmlx/e6RcQg4qzrHCZMSEfptkd5C8uXbr\n\tLmig==","X-Gm-Message-State":"AHPjjUjxrMsgvwUCKfdbwAkgH70kzratPcdm+mtY1muh3CQv34Zrnvn9\n\t2m09zEd3qrNl4ZsW","X-Google-Smtp-Source":"ADKCNb6LNFit7iwne9pKmsGvGbgYgml3czC4boetBrINZ1lrWtwwnwcvS38rKSpvN81Z8N4Go2h0Kw==","X-Received":"by 10.80.192.5 with SMTP id r5mr2911826edb.37.1504609684005;\n\tTue, 05 Sep 2017 04:08:04 -0700 (PDT)","Date":"Tue, 5 Sep 2017 13:08:00 +0200","From":"Daniel Vetter <daniel@ffwll.ch>","To":"\"Hean-Loong, Ong\" <hean.loong.ong@intel.com>","Subject":"Re: [PATCHv7 3/3] ARM:drm ivip Intel FPGA Video and Image Processing\n\tSuite","Message-ID":"<20170905110800.r6e2dh2nj76ycfc7@phenom.ffwll.local>","Mail-Followup-To":"\"Hean-Loong, Ong\" <hean.loong.ong@intel.com>,\n\tRob Herring <robh+dt@kernel.org>, Dinh Nguyen <dinguyen@kernel.org>, \n\tDaniel Vetter <daniel.vetter@intel.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tRandy Dunlap <rdunlap@infradead.org>, devicetree@vger.kernel.org,\n\tdri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org","References":"<1504595552-9209-1-git-send-email-hean.loong.ong@intel.com>\n\t<1504595552-9209-4-git-send-email-hean.loong.ong@intel.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<1504595552-9209-4-git-send-email-hean.loong.ong@intel.com>","X-Operating-System":"Linux phenom 4.12.0-1-amd64 ","User-Agent":"NeoMutt/20170609 (1.8.3)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170905_040827_809373_3076D8DF ","X-CRM114-Status":"GOOD (  27.47  )","X-Spam-Score":"-2.7 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.7 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/,\n\tlow\n\ttrust [2a00:1450:400c:c09:0:0:0:233 listed in] [list.dnswl.org]\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n\tauthor's domain","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"devicetree@vger.kernel.org, Randy Dunlap <rdunlap@infradead.org>,\n\tlinux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,\n\tDinh Nguyen <dinguyen@kernel.org>, Rob Herring <robh+dt@kernel.org>, \n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tDaniel Vetter <daniel.vetter@intel.com>,\n\tlinux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1767391,"web_url":"http://patchwork.ozlabs.org/comment/1767391/","msgid":"<20170912214824.i7oab6kroqllzidc@rob-hp-laptop>","list_archive_url":null,"date":"2017-09-12T21:48:24","subject":"Re: [PATCHv7] ARM:dt-bindings:display Intel FPGA Video and Image\n\tProcessing Suite","submitter":{"id":62529,"url":"http://patchwork.ozlabs.org/api/people/62529/","name":"Rob Herring (Arm)","email":"robh@kernel.org"},"content":"On Tue, Sep 05, 2017 at 03:12:30PM +0800, Hean-Loong, Ong wrote:\n> From: Ong Hean Loong <hean.loong.ong@intel.com>\n> \n> Device tree binding for Intel FPGA Video and Image\n> Processing Suite. The binding involved would be generated\n> from the Altera (Intel) Qsys system. The bindings would\n> set the max width, max height and memory port width.\n> The device tree binding only supports the Intel Arria10\n> devkit and its variants. Vendor name retained as altr.\n> \n> Signed-off-by: Ong, Hean Loong <hean.loong.ong@intel.com>\n> ---\n\nAcked-by: Rob Herring <robh@kernel.org>","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"nTHFdz0z\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xsJMs2yZFz9t4X\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 13 Sep 2017 07:48:56 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1drt36-0000ah-Cx; Tue, 12 Sep 2017 21:48:52 +0000","from mail-oi0-f45.google.com ([209.85.218.45])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1drt31-0000LY-NL for linux-arm-kernel@lists.infradead.org;\n\tTue, 12 Sep 2017 21:48:49 +0000","by mail-oi0-f45.google.com with SMTP id r20so35824332oie.0\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tTue, 12 Sep 2017 14:48:26 -0700 (PDT)","from localhost (216-188-254-6.dyn.grandenetworks.net.\n\t[216.188.254.6]) by smtp.gmail.com with ESMTPSA id\n\tq83sm10978150oif.4.2017.09.12.14.48.24\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tTue, 12 Sep 2017 14:48:25 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=NX98rB1zmOEo/ocJfxhpqRT3OmQsYK6Q7jJd3KHhTpw=;\n\tb=nTHFdz0zRPXgmS\n\te83W7QQbho7KZhQJ6Ls7lBGPtWPtXR1++Wsf9Jvt52m16gpSTiYZGHeiWXROqvIP1Tcnbo9bJBbv8\n\tr2RRhZ/IjHh0uPFE89CKJn2QBG6W//L60At3zJ550YuLpJ5jA84qipYT4lbCvXVFuAy7sVDPt3cIY\n\tTak0SPMOwlFgs1/ruJ/VipBYuUbodIRYoQV0oaLuC707YABSg6GrfReXgVIyPmgvh/BcgB/OfECfW\n\tujkOGC1PLjOnEBBJ8kfk26UWP31GiFzNtnyunSh1mSv2bEO1yxIxCGEXzMVT/ahrcwO/Icrn5aJ8u\n\tLufQ4VcxuZZqZpK4y4+Q==;","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:in-reply-to:user-agent;\n\tbh=XADwCrkshcHGmZB7WckDiewduBH/5fE038JsKCrVjPU=;\n\tb=UR07Q4bF1VZGsY6R/ZSjr4aCe/i2LqoH+fw6+hyGFaUNC4EcG20ETwnVSw8TnhRhmU\n\tUvlmZ9lcdRxXnKmj0brtdVJTs2Nj4qBywUkvesCC2GOIzbcI09S0ZYH9Q3umzPzWlQ24\n\txjOrwRc8sdH93u5suBe4gGJ03XJEzMgA+44ew1rbCa1JiistyjQE3OKjikfQ+gMwTUSc\n\tAv5uMWpyz3oiYWyMC7RuXZBdI7c3p4eY+eDD42ugRNejNTz6hsdAGE8f/d+pi1GX514E\n\tRIEcvUhDFBE1M+M8bj4tN9PcdPpa0G0lQ9ZRuc3mDup72EcSGD1E1l+037lJL37hcvuC\n\tlP0g==","X-Gm-Message-State":"AHPjjUglQ32EtzScsZtZoqfj477G8noos1vUVQqdJGeTcQ/Iy78MJx+/\n\tVQ+6ZA8nO3PZU0mRY4c=","X-Google-Smtp-Source":"AOwi7QDUPpO+aPSNPYLFUxTyocs28gqSbfbuCUqps6F7DScdB6cYhPauGmg2TbX7nwRDSyUQL2i4Ag==","X-Received":"by 10.202.73.65 with SMTP id w62mr17196827oia.159.1505252905825; \n\tTue, 12 Sep 2017 14:48:25 -0700 (PDT)","Date":"Tue, 12 Sep 2017 16:48:24 -0500","From":"Rob Herring <robh@kernel.org>","To":"\"Hean-Loong, Ong\" <hean.loong.ong@intel.com>","Subject":"Re: [PATCHv7] ARM:dt-bindings:display Intel FPGA Video and Image\n\tProcessing Suite","Message-ID":"<20170912214824.i7oab6kroqllzidc@rob-hp-laptop>","References":"<1504595552-9209-1-git-send-email-hean.loong.ong@intel.com>\n\t<1504595552-9209-2-git-send-email-hean.loong.ong@intel.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<1504595552-9209-2-git-send-email-hean.loong.ong@intel.com>","User-Agent":"NeoMutt/20170113 (1.7.2)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170912_144847_821445_F5086357 ","X-CRM114-Status":"UNSURE (   8.56  )","X-CRM114-Notice":"Please train this message.","X-Spam-Score":"-1.5 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.5 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno trust [209.85.218.45 listed in list.dnswl.org]\n\t-0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3)\n\t[209.85.218.45 listed in wl.mailspike.net]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends\n\tin digit (robherring2[at]gmail.com)\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (robherring2[at]gmail.com)\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders\n\t0.2 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and\n\tEnvelopeFrom freemail headers are different","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"devicetree@vger.kernel.org, Randy Dunlap <rdunlap@infradead.org>,\n\tlinux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,\n\tDinh Nguyen <dinguyen@kernel.org>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tDaniel Vetter <daniel.vetter@intel.com>, Ong@rob-hp-laptop,\n\tlinux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}}]