[{"id":1761876,"web_url":"http://patchwork.ozlabs.org/comment/1761876/","msgid":"<CAAtXAHdgjJLBse8fjTWKcM3BBx+1C3G30TkkrrAKT2qmJo7z_g@mail.gmail.com>","list_archive_url":null,"date":"2017-09-01T17:48:13","subject":"Re: [patch v7 1/4] drivers: jtag: Add JTAG core driver","submitter":{"id":65751,"url":"http://patchwork.ozlabs.org/api/people/65751/","name":"Moritz Fischer","email":"moritz.fischer@ettus.com"},"content":"Nit inline ;-)\n\nOn Fri, Sep 1, 2017 at 9:06 AM, Oleksandr Shamray\n<oleksandrs@mellanox.com> wrote:\n> Initial patch for JTAG friver\n\ns/friver/driver\n> JTAG class driver provide infrastructure to support hardware/software\n> JTAG platform drivers. It provide user layer API interface for flashing\n> and debugging external devices which equipped with JTAG interface\n> using standard transactions.\n>\n> Driver exposes set of IOCTL to user space for:\n> - XFER:\n> - SIR (Scan Instruction Register, IEEE 1149.1 Data Register scan);\n> - SDR (Scan Data Register, IEEE 1149.1 Instruction Register scan);\n> - RUNTEST (Forces the IEEE 1149.1 bus to a run state for a specified\n>   number of clocks).\n> - SIOCFREQ/GIOCFREQ for setting and reading JTAG frequency.\n>\n> Driver core provides set of internal APIs for allocation and\n> registration:\n> - jtag_register;\n> - jtag_unregister;\n> - jtag_alloc;\n> - jtag_free;\n>\n> Platform driver on registration with jtag-core creates the next\n> entry in dev folder:\n> /dev/jtagX\n>\n> Signed-off-by: Oleksandr Shamray <oleksandrs@mellanox.com>\n> Signed-off-by: Jiri Pirko <jiri@mellanox.com>\n> ---\n> v6->v7\n> Notifications from kbuild test robot <lkp@intel.com>\n> - Remove include asm/types.h from jtag.h\n> - Add include <linux/types.h> to jtag.c\n>\n> v5->v6\n> v4->v5\n>\n> v3->v4\n> Comments pointed by Arnd Bergmann <arnd@arndb.de>\n> - change transaction pointer tdio type  to __u64\n> - change internal status type from enum to __u32\n> - reorder jtag_xfer members to aviod the implied padding\n> - add __packed attribute to jtag_xfer and jtag_run_test_idle\n>\n> v2->v3\n> Notifications from kbuild test robot <lkp@intel.com>\n> - Change include path to <linux/types.h> in jtag.h\n>\n> v1->v2\n> Comments pointed by Greg KH <gregkh@linuxfoundation.org>\n> - Change license type from GPLv2/BSD to GPLv2\n> - Change type of variables which crossed user/kernel to __type\n> - Remove \"default n\" from Kconfig\n>\n> Comments pointed by Andrew Lunn <andrew@lunn.ch>\n> - Change list_add_tail in jtag_unregister to list_del\n>\n> Comments pointed by Neil Armstrong <narmstrong@baylibre.com>\n> - Add SPDX-License-Identifier instead of license text\n>\n> Comments pointed by Arnd Bergmann <arnd@arndb.de>\n> - Change __copy_to_user to memdup_user\n> - Change __put_user to put_user\n> - Change type of variables to __type for compatible 32 and 64-bit systems\n> - Add check for maximum xfer data size\n> - Change lookup data mechanism to get jtag data from inode\n> - Add .compat_ioctl to file ops\n> - Add mem alignment for jtag priv data\n>\n> Comments pointed by Tobias Klauser <tklauser@distanz.ch>\n> - Change function names to avoid match with variable types\n> - Fix description for jtag_ru_test_idle in uapi jtag.h\n> - Fix misprints IDEL/IDLE, trough/through\n> ---\n>  Documentation/ioctl/ioctl-number.txt |    2 +\n>  MAINTAINERS                          |    8 +\n>  drivers/Kconfig                      |    2 +\n>  drivers/Makefile                     |    1 +\n>  drivers/jtag/Kconfig                 |   16 ++\n>  drivers/jtag/Makefile                |    1 +\n>  drivers/jtag/jtag.c                  |  312 ++++++++++++++++++++++++++++++++++\n>  include/linux/jtag.h                 |   48 +++++\n>  include/uapi/linux/jtag.h            |  111 ++++++++++++\n>  9 files changed, 501 insertions(+), 0 deletions(-)\n>  create mode 100644 drivers/jtag/Kconfig\n>  create mode 100644 drivers/jtag/Makefile\n>  create mode 100644 drivers/jtag/jtag.c\n>  create mode 100644 include/linux/jtag.h\n>  create mode 100644 include/uapi/linux/jtag.h\n>\n> diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt\n> index 3e3fdae..1af2508 100644\n> --- a/Documentation/ioctl/ioctl-number.txt\n> +++ b/Documentation/ioctl/ioctl-number.txt\n> @@ -321,6 +321,8 @@ Code  Seq#(hex)     Include File            Comments\n>  0xB0   all     RATIO devices           in development:\n>                                         <mailto:vgo@ratio.de>\n>  0xB1   00-1F   PPPoX                   <mailto:mostrows@styx.uwaterloo.ca>\n> +0xB2   00-0f   linux/jtag.h            JTAG driver\n> +                                       <mailto:oleksandrs@mellanox.com>\n>  0xB3   00      linux/mmc/ioctl.h\n>  0xB4   00-0F   linux/gpio.h            <mailto:linux-gpio@vger.kernel.org>\n>  0xB5   00-0F   uapi/linux/rpmsg.h      <mailto:linux-remoteproc@vger.kernel.org>\n> diff --git a/MAINTAINERS b/MAINTAINERS\n> index 205d397..141aeaf 100644\n> --- a/MAINTAINERS\n> +++ b/MAINTAINERS\n> @@ -7292,6 +7292,14 @@ L:       linux-serial@vger.kernel.org\n>  S:     Maintained\n>  F:     drivers/tty/serial/jsm/\n>\n> +JTAG SUBSYSTEM\n> +M:     Oleksandr Shamray <oleksandrs@mellanox.com>\n> +M:     Vadim Pasternak <vadimp@mellanox.com>\n> +S:     Maintained\n> +F:     include/linux/jtag.h\n> +F:     include/uapi/linux/jtag.h\n> +F:     drivers/jtag/\n> +\n>  K10TEMP HARDWARE MONITORING DRIVER\n>  M:     Clemens Ladisch <clemens@ladisch.de>\n>  L:     linux-hwmon@vger.kernel.org\n> diff --git a/drivers/Kconfig b/drivers/Kconfig\n> index 505c676..2214678 100644\n> --- a/drivers/Kconfig\n> +++ b/drivers/Kconfig\n> @@ -208,4 +208,6 @@ source \"drivers/tee/Kconfig\"\n>\n>  source \"drivers/mux/Kconfig\"\n>\n> +source \"drivers/jtag/Kconfig\"\n> +\n>  endmenu\n> diff --git a/drivers/Makefile b/drivers/Makefile\n> index dfdcda0..6a2059b 100644\n> --- a/drivers/Makefile\n> +++ b/drivers/Makefile\n> @@ -182,3 +182,4 @@ obj-$(CONFIG_FPGA)          += fpga/\n>  obj-$(CONFIG_FSI)              += fsi/\n>  obj-$(CONFIG_TEE)              += tee/\n>  obj-$(CONFIG_MULTIPLEXER)      += mux/\n> +obj-$(CONFIG_JTAG)             += jtag/\n> diff --git a/drivers/jtag/Kconfig b/drivers/jtag/Kconfig\n> new file mode 100644\n> index 0000000..0fad1a3\n> --- /dev/null\n> +++ b/drivers/jtag/Kconfig\n> @@ -0,0 +1,16 @@\n> +menuconfig JTAG\n> +       tristate \"JTAG support\"\n> +       ---help---\n> +         This provides basic core functionality support for jtag class devices\n> +         Hardware equipped with JTAG microcontroller which can be built\n> +         on top of this drivers. Driver exposes the set of IOCTL to the\n> +         user space for:\n> +         SIR (Scan Instruction Register, IEEE 1149.1 Data Register scan);\n> +         SDR (Scan Data Register, IEEE 1149.1 Instruction Register scan);\n> +         RUNTEST (Forces IEEE 1149.1 bus to a run state for specified\n> +         number of clocks).\n> +\n> +         If you want this support, you should say Y here.\n> +\n> +         To compile this driver as a module, choose M here: the module will\n> +         be called jtag.\n> diff --git a/drivers/jtag/Makefile b/drivers/jtag/Makefile\n> new file mode 100644\n> index 0000000..af37493\n> --- /dev/null\n> +++ b/drivers/jtag/Makefile\n> @@ -0,0 +1 @@\n> +obj-$(CONFIG_JTAG)             += jtag.o\n> diff --git a/drivers/jtag/jtag.c b/drivers/jtag/jtag.c\n> new file mode 100644\n> index 0000000..f948d4c\n> --- /dev/null\n> +++ b/drivers/jtag/jtag.c\n> @@ -0,0 +1,312 @@\n> +/*\n> + * drivers/jtag/jtag.c\n> + *\n> + * Copyright (c) 2017 Mellanox Technologies. All rights reserved.\n> + * Copyright (c) 2017 Oleksandr Shamray <oleksandrs@mellanox.com>\n> + *\n> + * Released under the GPLv2 only.\n> + * SPDX-License-Identifier: GPL-2.0\n> + */\n> +\n> +#include <linux/cdev.h>\n> +#include <linux/device.h>\n> +#include <linux/jtag.h>\n> +#include <linux/kernel.h>\n> +#include <linux/list.h>\n> +#include <linux/module.h>\n> +#include <linux/rtnetlink.h>\n> +#include <linux/spinlock.h>\n> +#include <linux/types.h>\n> +#include <uapi/linux/jtag.h>\n> +\n> +struct jtag {\n> +       struct list_head list;\n> +       struct device *dev;\n> +       struct cdev cdev;\n> +       int id;\n> +       spinlock_t lock;\n> +       int open;\n> +       const struct jtag_ops *ops;\n> +       unsigned long priv[0] __aligned(ARCH_DMA_MINALIGN);\n> +};\n> +\n> +static dev_t jtag_devt;\n> +static LIST_HEAD(jtag_list);\n> +static DEFINE_MUTEX(jtag_mutex);\n> +static DEFINE_IDA(jtag_ida);\n> +\n> +void *jtag_priv(struct jtag *jtag)\n> +{\n> +       return jtag->priv;\n> +}\n> +EXPORT_SYMBOL_GPL(jtag_priv);\n> +\n> +static __u64 jtag_copy_from_user(__u64 udata, unsigned long bit_size)\n> +{\n> +       unsigned long size;\n> +       void *kdata;\n> +\n> +       size = DIV_ROUND_UP(bit_size, BITS_PER_BYTE);\n> +       kdata = memdup_user(u64_to_user_ptr(udata), size);\n> +\n> +       return (__u64)(uintptr_t)kdata;\n> +}\n> +\n> +static unsigned long jtag_copy_to_user(__u64 udata, __u64 kdata,\n> +                                      unsigned long bit_size)\n> +{\n> +       unsigned long size;\n> +\n> +       size = DIV_ROUND_UP(bit_size, BITS_PER_BYTE);\n> +\n> +       return copy_to_user(u64_to_user_ptr(udata), jtag_u64_to_ptr(kdata),\n> +                           size);\n> +}\n> +\n> +static struct class jtag_class = {\n> +       .name = \"jtag\",\n> +       .owner = THIS_MODULE,\n> +};\n> +\n> +static int jtag_run_test_idle_op(struct jtag *jtag,\n> +                                struct jtag_run_test_idle *idle)\n> +{\n> +       if (jtag->ops->idle)\n> +               return jtag->ops->idle(jtag, idle);\n> +       else\n> +               return -EOPNOTSUPP;\n> +}\n> +\n> +static int jtag_xfer_op(struct jtag *jtag, struct jtag_xfer *xfer)\n> +{\n> +       if (jtag->ops->xfer)\n> +               return jtag->ops->xfer(jtag, xfer);\n> +       else\n> +               return -EOPNOTSUPP;\n> +}\n> +\n> +static long jtag_ioctl(struct file *file, unsigned int cmd, unsigned long arg)\n> +{\n> +       struct jtag *jtag = file->private_data;\n> +       __u32 *uarg = (__u32 __user *)arg;\n> +       void  *varg = (void __user *)arg;\n> +       struct jtag_run_test_idle idle;\n> +       struct jtag_xfer xfer;\n> +       __u64 tdio_user;\n> +       __u32 value;\n> +       int err;\n> +\n> +       switch (cmd) {\n> +       case JTAG_GIOCFREQ:\n> +               if (jtag->ops->freq_get)\n> +                       err = jtag->ops->freq_get(jtag, &value);\n> +               else\n> +                       err = -EOPNOTSUPP;\n> +               if (err)\n> +                       break;\n> +\n> +               err = put_user(value, uarg);\n> +               break;\n> +\n> +       case JTAG_SIOCFREQ:\n> +               err = __get_user(value, uarg);\n> +\n> +               if (value == 0)\n> +                       err = -EINVAL;\n> +               if (err)\n> +                       break;\n> +\n> +               if (jtag->ops->freq_set)\n> +                       err = jtag->ops->freq_set(jtag, value);\n> +               else\n> +                       err = -EOPNOTSUPP;\n> +               break;\n> +\n> +       case JTAG_IOCRUNTEST:\n> +               if (copy_from_user(&idle, varg,\n> +                                  sizeof(struct jtag_run_test_idle)))\n> +                       return -ENOMEM;\n> +               err = jtag_run_test_idle_op(jtag, &idle);\n> +               break;\n> +\n> +       case JTAG_IOCXFER:\n> +               if (copy_from_user(&xfer, varg, sizeof(struct jtag_xfer)))\n> +                       return -EFAULT;\n> +\n> +               if (xfer.length >= JTAG_MAX_XFER_DATA_LEN)\n> +                       return -EFAULT;\n> +\n> +               tdio_user = xfer.tdio;\n> +               xfer.tdio = jtag_copy_from_user(xfer.tdio, xfer.length);\n> +               if (!xfer.tdio)\n> +                       return -ENOMEM;\n> +\n> +               err = jtag_xfer_op(jtag, &xfer);\n> +               if (jtag_copy_to_user(tdio_user, xfer.tdio, xfer.length)) {\n> +                       kfree(jtag_u64_to_ptr(xfer.tdio));\n> +                       return -EFAULT;\n> +               }\n> +\n> +               kfree(jtag_u64_to_ptr(xfer.tdio));\n> +               xfer.tdio = tdio_user;\n> +               if (copy_to_user(varg, &xfer, sizeof(struct jtag_xfer)))\n> +                       return -EFAULT;\n> +               break;\n> +\n> +       case JTAG_GIOCSTATUS:\n> +               if (jtag->ops->status_get)\n> +                       err = jtag->ops->status_get(jtag, &value);\n> +               else\n> +                       err = -EOPNOTSUPP;\n> +               if (err)\n> +                       break;\n> +\n> +               err = put_user(value, uarg);\n> +               break;\n> +\n> +       default:\n> +               return -EINVAL;\n> +       }\n> +       return err;\n> +}\n> +\n> +#ifdef CONFIG_COMPAT\n> +static long jtag_ioctl_compat(struct file *file, unsigned int cmd,\n> +                             unsigned long arg)\n> +{\n> +       return jtag_ioctl(file, cmd, (unsigned long)compat_ptr(arg));\n> +}\n> +#endif\n> +\n> +static int jtag_open(struct inode *inode, struct file *file)\n> +{\n> +       struct jtag *jtag = container_of(inode->i_cdev, struct jtag, cdev);\n> +\n> +       spin_lock(&jtag->lock);\n> +\n> +       if (jtag->open) {\n> +               dev_info(NULL, \"jtag already opened\\n\");\n> +               spin_unlock(&jtag->lock);\n> +               return -EBUSY;\n> +       }\n> +\n> +       jtag->open++;\n> +       file->private_data = jtag;\n> +       spin_unlock(&jtag->lock);\n> +       return 0;\n> +}\n> +\n> +static int jtag_release(struct inode *inode, struct file *file)\n> +{\n> +       struct jtag *jtag = file->private_data;\n> +\n> +       spin_lock(&jtag->lock);\n> +       jtag->open--;\n> +       spin_unlock(&jtag->lock);\n> +       return 0;\n> +}\n> +\n> +static const struct file_operations jtag_fops = {\n> +       .owner          = THIS_MODULE,\n> +       .open           = jtag_open,\n> +       .release        = jtag_release,\n> +       .llseek         = noop_llseek,\n> +       .unlocked_ioctl = jtag_ioctl,\n> +#ifdef CONFIG_COMPAT\n> +       .compat_ioctl   = jtag_ioctl_compat,\n> +#endif\n> +};\n> +\n> +struct jtag *jtag_alloc(size_t priv_size, const struct jtag_ops *ops)\n> +{\n> +       struct jtag *jtag;\n> +\n> +       jtag = kzalloc(sizeof(*jtag) + round_up(priv_size, ARCH_DMA_MINALIGN),\n> +                      GFP_KERNEL);\n> +       if (!jtag)\n> +               return NULL;\n> +\n> +       jtag->ops = ops;\n> +       return jtag;\n> +}\n> +EXPORT_SYMBOL_GPL(jtag_alloc);\n> +\n> +void jtag_free(struct jtag *jtag)\n> +{\n> +       kfree(jtag);\n> +}\n> +EXPORT_SYMBOL_GPL(jtag_free);\n> +\n> +int jtag_register(struct jtag *jtag)\n> +{\n> +       int id;\n> +       int err;\n> +\n> +       id = ida_simple_get(&jtag_ida, 0, 0, GFP_KERNEL);\n> +       if (id < 0)\n> +               return id;\n> +\n> +       jtag->id = id;\n> +       cdev_init(&jtag->cdev, &jtag_fops);\n> +       jtag->cdev.owner = THIS_MODULE;\n> +       err = cdev_add(&jtag->cdev, MKDEV(MAJOR(jtag_devt), jtag->id), 1);\n> +       if (err)\n> +               goto err_cdev;\n> +\n> +       /* Register this jtag device with the driver core */\n> +       jtag->dev = device_create(&jtag_class, NULL, MKDEV(MAJOR(jtag_devt),\n> +                                                          jtag->id),\n> +                                 NULL, \"jtag%d\", jtag->id);\n> +       if (!jtag->dev)\n> +               goto err_device_create;\n> +\n> +       jtag->open = 0;\n> +       dev_set_drvdata(jtag->dev, jtag);\n> +       spin_lock_init(&jtag->lock);\n> +       mutex_lock(&jtag_mutex);\n> +       list_add_tail(&jtag->list, &jtag_list);\n> +       mutex_unlock(&jtag_mutex);\n> +       return err;\n> +\n> +err_device_create:\n> +       cdev_del(&jtag->cdev);\n> +err_cdev:\n> +       ida_simple_remove(&jtag_ida, id);\n> +       return err;\n> +}\n> +EXPORT_SYMBOL_GPL(jtag_register);\n> +\n> +void jtag_unregister(struct jtag *jtag)\n> +{\n> +       struct device *dev = jtag->dev;\n> +\n> +       mutex_lock(&jtag_mutex);\n> +       list_del(&jtag->list);\n> +       mutex_unlock(&jtag_mutex);\n> +       cdev_del(&jtag->cdev);\n> +       device_unregister(dev);\n> +       ida_simple_remove(&jtag_ida, jtag->id);\n> +}\n> +EXPORT_SYMBOL_GPL(jtag_unregister);\n> +\n> +static int __init jtag_init(void)\n> +{\n> +       int err;\n> +\n> +       err = alloc_chrdev_region(&jtag_devt, 0, 1, \"jtag\");\n> +       if (err)\n> +               return err;\n> +       return class_register(&jtag_class);\n> +}\n> +\n> +static void __exit jtag_exit(void)\n> +{\n> +       class_unregister(&jtag_class);\n> +}\n> +\n> +module_init(jtag_init);\n> +module_exit(jtag_exit);\n> +\n> +MODULE_AUTHOR(\"Oleksandr Shamray <oleksandrs@mellanox.com>\");\n> +MODULE_DESCRIPTION(\"Generic jtag support\");\n> +MODULE_LICENSE(\"GPL v2\");\n> diff --git a/include/linux/jtag.h b/include/linux/jtag.h\n> new file mode 100644\n> index 0000000..f48ae9d\n> --- /dev/null\n> +++ b/include/linux/jtag.h\n> @@ -0,0 +1,48 @@\n> +/*\n> + * drivers/jtag/jtag.c\n> + *\n> + * Copyright (c) 2017 Mellanox Technologies. All rights reserved.\n> + * Copyright (c) 2017 Oleksandr Shamray <oleksandrs@mellanox.com>\n> + *\n> + * Released under the GPLv2 only.\n> + * SPDX-License-Identifier: GPL-2.0\n> + */\n> +\n> +#ifndef __JTAG_H\n> +#define __JTAG_H\n> +\n> +#include <uapi/linux/jtag.h>\n> +\n> +#ifndef ARCH_DMA_MINALIGN\n> +#define ARCH_DMA_MINALIGN 1\n> +#endif\n> +\n> +#define jtag_u64_to_ptr(arg) ((void *)(uintptr_t)arg)\n> +\n> +#define JTAG_MAX_XFER_DATA_LEN 65535\n> +\n> +struct jtag;\n> +/**\n> + * struct jtag_ops - callbacks for jtag control functions:\n> + *\n> + * @freq_get: get frequency function. Filled by device driver\n> + * @freq_set: set frequency function. Filled by device driver\n> + * @status_get: set status function. Filled by device driver\n> + * @idle: set JTAG to idle state function. Filled by device driver\n> + * @xfer: send JTAG xfer function. Filled by device driver\n> + */\n> +struct jtag_ops {\n> +       int (*freq_get)(struct jtag *jtag, __u32 *freq);\n> +       int (*freq_set)(struct jtag *jtag, __u32 freq);\n> +       int (*status_get)(struct jtag *jtag, __u32 *state);\n> +       int (*idle)(struct jtag *jtag, struct jtag_run_test_idle *idle);\n> +       int (*xfer)(struct jtag *jtag, struct jtag_xfer *xfer);\n> +};\n> +\n> +void *jtag_priv(struct jtag *jtag);\n> +int jtag_register(struct jtag *jtag);\n> +void jtag_unregister(struct jtag *jtag);\n> +struct jtag *jtag_alloc(size_t priv_size, const struct jtag_ops *ops);\n> +void jtag_free(struct jtag *jtag);\n> +\n> +#endif /* __JTAG_H */\n> diff --git a/include/uapi/linux/jtag.h b/include/uapi/linux/jtag.h\n> new file mode 100644\n> index 0000000..af22ea6\n> --- /dev/null\n> +++ b/include/uapi/linux/jtag.h\n> @@ -0,0 +1,111 @@\n> +/*\n> + * JTAG class driver\n> + *\n> + * Copyright (c) 2017 Mellanox Technologies. All rights reserved.\n> + * Copyright (c) 2017 Oleksandr Shamray <oleksandrs@mellanox.com>\n> + *\n> + * Released under the GPLv2/BSD.\n> + * SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause\n> + */\n> +\n> +#ifndef __UAPI_LINUX_JTAG_H\n> +#define __UAPI_LINUX_JTAG_H\n> +\n> +/**\n> + * enum jtag_xfer_mode:\n> + *\n> + * @JTAG_XFER_HW_MODE: hardware mode transfer\n> + * @JTAG_XFER_SW_MODE: software mode transfer\n> + */\n> +enum jtag_xfer_mode {\n> +       JTAG_XFER_HW_MODE,\n> +       JTAG_XFER_SW_MODE,\n> +};\n> +\n> +/**\n> + * enum jtag_endstate:\n> + *\n> + * @JTAG_STATE_IDLE: JTAG state machine IDLE state\n> + * @JTAG_STATE_PAUSEIR: JTAG state machine PAUSE_IR state\n> + * @JTAG_STATE_PAUSEDR: JTAG state machine PAUSE_DR state\n> + */\n> +enum jtag_endstate {\n> +       JTAG_STATE_IDLE,\n> +       JTAG_STATE_PAUSEIR,\n> +       JTAG_STATE_PAUSEDR,\n> +};\n> +\n> +/**\n> + * enum jtag_xfer_type:\n> + *\n> + * @JTAG_SIR_XFER: SIR transfer\n> + * @JTAG_SDR_XFER: SDR transfer\n> + */\n> +enum jtag_xfer_type {\n> +       JTAG_SIR_XFER,\n> +       JTAG_SDR_XFER,\n> +};\n> +\n> +/**\n> + * enum jtag_xfer_direction:\n> + *\n> + * @JTAG_READ_XFER: read transfer\n> + * @JTAG_WRITE_XFER: write transfer\n> + */\n> +enum jtag_xfer_direction {\n> +       JTAG_READ_XFER,\n> +       JTAG_WRITE_XFER,\n> +};\n> +\n> +/**\n> + * struct jtag_run_test_idle - forces JTAG state machine to\n> + * RUN_TEST/IDLE state\n> + *\n> + * @mode: access mode\n> + * @reset: 0 - run IDLE/PAUSE from current state\n> + *         1 - go through TEST_LOGIC/RESET state before  IDLE/PAUSE\n> + * @end: completion flag\n> + * @tck: clock counter\n> + *\n> + * Structure represents interface to JTAG device for jtag idle\n> + * execution.\n> + */\n> +struct jtag_run_test_idle {\n> +       __u8    mode;\n> +       __u8    reset;\n> +       __u8    endstate;\n> +       __u8    tck;\n> +};\n> +\n> +/**\n> + * struct jtag_xfer - jtag xfer:\n> + *\n> + * @mode: access mode\n> + * @type: transfer type\n> + * @direction: xfer direction\n> + * @length: xfer bits len\n> + * @tdio : xfer data array\n> + * @endir: xfer end state\n> + *\n> + * Structure represents interface to Aspeed JTAG device for jtag sdr xfer\n> + * execution.\n> + */\n> +struct jtag_xfer {\n> +       __u8    mode;\n> +       __u8    type;\n> +       __u8    direction;\n> +       __u8    endstate;\n> +       __u32   length;\n> +       __u64   tdio;\n> +};\n> +\n> +#define __JTAG_IOCTL_MAGIC     0xb2\n> +\n> +#define JTAG_IOCRUNTEST        _IOW(__JTAG_IOCTL_MAGIC, 0,\\\n> +                            struct jtag_run_test_idle)\n> +#define JTAG_SIOCFREQ  _IOW(__JTAG_IOCTL_MAGIC, 1, unsigned int)\n> +#define JTAG_GIOCFREQ  _IOR(__JTAG_IOCTL_MAGIC, 2, unsigned int)\n> +#define JTAG_IOCXFER   _IOWR(__JTAG_IOCTL_MAGIC, 3, struct jtag_xfer)\n> +#define JTAG_GIOCSTATUS _IOWR(__JTAG_IOCTL_MAGIC, 4, enum jtag_endstate)\n> +\n> +#endif /* __UAPI_LINUX_JTAG_H */\n> --\n> 1.7.1\n>\n> --\n> To unsubscribe from this list: send the line \"unsubscribe devicetree\" in\n> the body of a message to majordomo@vger.kernel.org\n> More majordomo info at  http://vger.kernel.org/majordomo-info.html\n\nThanks,\n\nMoritz","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=\"VKXzlYmw\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ettus-com.20150623.gappssmtp.com\n\theader.i=@ettus-com.20150623.gappssmtp.com header.b=\"s+rGGVPH\"; \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 3xkRYp17NPz9t42\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tSat,  2 Sep 2017 03:48:46 +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 1dnq3e-0000PL-Ls; Fri, 01 Sep 2017 17:48:42 +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 1dnq3Z-0000Mn-J0 for linux-arm-kernel@lists.infradead.org;\n\tFri, 01 Sep 2017 17:48:40 +0000","by mail-wm0-x233.google.com with SMTP id 187so5577607wmn.1\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tFri, 01 Sep 2017 10:48:16 -0700 (PDT)","by 10.28.216.140 with HTTP; Fri, 1 Sep 2017 10:48:13 -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:To:Subject:Message-ID:Date:From:\n\tReferences:In-Reply-To:MIME-Version:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=vcAv7xqdOoPNHiq/TwVN0o5vZNUIyognzIr8RwmTdSw=;\n\tb=VKXzlYmwOHumaZ\n\tYnzD9TePiDzMnwQvUoj6L4taaLKW+2VIUMhLb51PBBR+lBMv8UcP52th802o2dLyKQDz0nwc/HM8V\n\toKSnfSxhTVqPhO/AY7YufAd2SllvVrnUp0C3s/Yju7OxM1Hh9dypo9rSjiwG05USnw/wTj42gwnNi\n\tbVIMgiIcyEZfR9y+2teJrogPjGnYeu+0/yu55PR5IiUtQ0vPrQf4uAhKs0BeC6Ve7u8B4hWag3jjX\n\tkZD4NMG+KaibAq4ecMz6u3RNkM6evxJc+kOyeO3/YVNdcbPOzXsWUQB83UJ/peqNuq/xHKUbxr7lW\n\tr9xOknJrLycqiBAL155Q==;","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ettus-com.20150623.gappssmtp.com; s=20150623;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=qPxKqT5m2tsSNG31s7P2zOQm4HTRKNXj3V/m5D3gBME=;\n\tb=s+rGGVPH9bD78R6eEwsV16Xx2UALLwsapATM6Hn30gQJJ0zxKF2Zi12XuRJXHFqQfv\n\ttA7RrbOrxYu0YoPDqONNhaVJ9D4xaS9yfaEl3Y+K0CzKKk2LsoCiu9GsVQjLkzDyjehr\n\tpezm7OqpYc2sgLs7sWg1e10HhDjOfJrIljZvKHSX9w+MDC60XZkiESi/+AaovRIMb0YR\n\twjEOn0mZnsFK/9bsoa7tcjcaeANmTMtCJWRG0gC82IpXzpLr9mfz3mQncF0p5Sq6n1nU\n\to+UYcwRWzW8Us1hTieizkMqm5zsCTXGh74cFLexbSnLym0II97Jkgk6Y81mV/qtU8DRo\n\tDvnA=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=qPxKqT5m2tsSNG31s7P2zOQm4HTRKNXj3V/m5D3gBME=;\n\tb=JqF1/Tf31FmjCOFD8qJYt4DiZDtU0Wr0Sh2VutktK3ktJ2p68/jGeVy0a2B6R438hJ\n\tgPH2YSb9MJpsVr4I4iY6B+gBr8UgIeq9Y3t4iqdCcgORgD95ncwyjOW54Fji2HZxj5OL\n\tJrWMjqlCfNnRUa8IQyCwzz27zJPnA2sKv2j53MluDv9TEIDu+1501moJStQYzwf4imX8\n\tZ6RLy3zx9Nwh0UaLuqCcutSkIn04IOJXi4pLaVNFU/6fKqUtxOs/M3m0FcrEhTx28cFH\n\tGzVeDY+uUDTx+371XRrPLSZl/zabNEt5DPpJufxonXa2nF4rwMGQ4xLMJWOPAD8BOLLR\n\t+FfQ==","X-Gm-Message-State":"AHPjjUgFZqtkTqqhVom8lEz/9BOJeTuu0cQwdFuBiRT0O/oHvA9R4duL\n\tRBAZ1T9SS8QWqBLIVOKXcgFG8zrN0EKU7a4=","X-Google-Smtp-Source":"ADKCNb5xaEp2beEMcFeryWssQ+grdoXaPUMwPi3MpUXdbW4fNCrzFM5qxfkeslHYP/rAI5d8lq7TZq6SXHBFfptULlg=","X-Received":"by 10.28.107.76 with SMTP id g73mr893474wmc.66.1504288094176;\n\tFri, 01 Sep 2017 10:48:14 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<1504281966-6199-2-git-send-email-oleksandrs@mellanox.com>","References":"<1504281966-6199-1-git-send-email-oleksandrs@mellanox.com>\n\t<1504281966-6199-2-git-send-email-oleksandrs@mellanox.com>","From":"Moritz Fischer <moritz.fischer@ettus.com>","Date":"Fri, 1 Sep 2017 10:48:13 -0700","Message-ID":"<CAAtXAHdgjJLBse8fjTWKcM3BBx+1C3G30TkkrrAKT2qmJo7z_g@mail.gmail.com>","Subject":"Re: [patch v7 1/4] drivers: jtag: Add JTAG core driver","To":"Oleksandr Shamray <oleksandrs@mellanox.com>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170901_104837_982612_AA9AA91E ","X-CRM114-Status":"GOOD (  28.20  )","X-Spam-Score":"-2.6 (--)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-2.6 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","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 List <devicetree@vger.kernel.org>, mchehab@kernel.org,\n\tjiri@resnulli.us, Arnd Bergmann <arnd@arndb.de>,\n\tsystem-sw-low-level@mellanox.com, Greg KH <gregkh@linuxfoundation.org>,\n\topenbmc@lists.ozlabs.org,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>,\n\topenocd-devel-owner@lists.sourceforge.net, mec@shout.net,\n\tJiri Pirko <jiri@mellanox.com>, Rob Herring <robh+dt@kernel.org>,\n\tjoel@jms.id.au, linux-serial@vger.kernel.org, vadimp@maellanox.com,\n\ttklauser@distanz.ch, linux-api@vger.kernel.org,\n\t\"David S. Miller\" <davem@davemloft.net>,\n\tlinux-arm-kernel <linux-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":1764369,"web_url":"http://patchwork.ozlabs.org/comment/1764369/","msgid":"<CAK8P3a1Ym1UxbFyeUBrSBeHnoQh9NtBn5r6iVEjU_1ki_p3W5A@mail.gmail.com>","list_archive_url":null,"date":"2017-09-06T20:52:26","subject":"Re: [patch v7 2/4] drivers: jtag: Add Aspeed SoC 24xx and 25xx\n\tfamilies JTAG master driver","submitter":{"id":30,"url":"http://patchwork.ozlabs.org/api/people/30/","name":"Arnd Bergmann","email":"arnd@arndb.de"},"content":"On Fri, Sep 1, 2017 at 6:06 PM, Oleksandr Shamray\n<oleksandrs@mellanox.com> wrote:\n> Driver adds support of Aspeed 2500/2400 series SOC JTAG master controller.\n>\n> Driver implements the following jtag ops:\n> - freq_get;\n> - freq_set;\n> - status_get;\n> - idle;\n> - xfer;\n>\n> It has been tested on Mellanox system with BMC equipped with\n> Aspeed 2520 SoC for programming CPLD devices.\n>\n> Signed-off-by: Oleksandr Shamray <oleksandrs@mellanox.com>\n> Signed-off-by: Jiri Pirko <jiri@mellanox.com>\n\nNo further comments about this driver, if there is agreement about the subsystem\nin general, it looks good to go in.\n\nAcked-by: Arnd Bergmann <arnd@arndb.de\n\n       Arnd","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=\"Nqv2gLMD\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"Yqc5SenU\"; 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 3xnbPz0Q0nz9ryQ\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 06:52:55 +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 1dphJb-0003qv-Rx; Wed, 06 Sep 2017 20:52:51 +0000","from mail-oi0-x243.google.com ([2607:f8b0:4003:c06::243])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dphJY-0003mT-19 for linux-arm-kernel@lists.infradead.org;\n\tWed, 06 Sep 2017 20:52:49 +0000","by mail-oi0-x243.google.com with SMTP id h70so5215873oic.4\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tWed, 06 Sep 2017 13:52:27 -0700 (PDT)","by 10.157.91.35 with HTTP; Wed, 6 Sep 2017 13:52:26 -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:To:Subject:Message-ID:Date:From:\n\tReferences:In-Reply-To:MIME-Version:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=ooC/w7cyEQ93T+x7tHKp1/27ORmkTpAm+1zHqmXEjvU=;\n\tb=Nqv2gLMDCy5FYC\n\tn3A4/dnns8dFlh8f+dK31HDPqG7NRyH9gnC2p412GJBybgneOA3qch6lToTJ6x8G0v2jH0MkWpAJq\n\tzjEXXjmpc5YjTaFSVbR9rX8YhWO68XZOqhNrJvBlTPyvXXnZNQ6Tlg7XPrrxXkEJ7i0vb0+zfZEww\n\tyYUnAVt2Nzh1j9RB4hEn+5e62kwhvohdKGFuvp9nKGVXQmisNZPx36J2xtffVHavvDvYwsh6znSOT\n\txs+4Rdz3NerISZD6HHWRFqNBDPWp2hOkyF0XifIK822BMdXbPg87Ybq9DOKJyidd/j13OQKUbGIcb\n\tTknrfrzkB/BstqH772Tw==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=mime-version:sender:in-reply-to:references:from:date:message-id\n\t:subject:to:cc;\n\tbh=D/QUZ+aqKHxUztFWJ//HuKp/WM/Feb70kopqnRjeGeA=;\n\tb=Yqc5SenUrZbq5CXvSze6uCelJAfh4XNoRcoDo3evQbqbWmBBFXAes1begBp8xFF7AY\n\t0Ji9N3aoMEo5FCmrDsAQGOOmQrdrjKXxNV+QPgrYmJf5JEXuREFOnZWp5vBbXSwRel7a\n\tUjDo7e+LZfn9h2iu5KFE4f+B7U8rMmB2M0uSMucIlYNun+rKIv1SLB0Lk1tDdSyWZfJT\n\tRtyJD2qNSDLUHxHRnjWu6IfwqSZZ/DAgDoydZOFhi0Zx44ELAATYehIyyckiPua3amAw\n\th6JNi/7E6oEhfLJm2nhut6wjx+1DZ4smxPoXutyck+3ab/pVnQGdIgTt4xZtUz75cBK4\n\tPH3g=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:sender:in-reply-to:references:from\n\t:date:message-id:subject:to:cc;\n\tbh=D/QUZ+aqKHxUztFWJ//HuKp/WM/Feb70kopqnRjeGeA=;\n\tb=cBGGJqe8+24ZQ/EhfQUwRZk6toRCK4BQxJIxGiGjDb4qE9Vv6MjZgAbytfZLRPovvZ\n\tlCbb0km1xvNN1fMBK7TYrL5TWpVPrAJixZsgvcLhTyChwDbpTBWwwutSguXNK6HFy3zu\n\tukGjGLN0YBn2Ui0Z1u+cbJxhv57yKnvAEIUY0PgcGdB7iosmlpoqRsVdYJujVgxlUW0S\n\tCIyzxmCuiJna63qWQxc9ae/6uy3i7E+IR/l0K62/iIM4EMYPxpzbXdY8Gx2dhZFSncMe\n\tFWFMZyVXKjdsuABVzvhwkmOWVdra4kRHQoXTK52FlozLF0Vu9BkeAs2Uo8vOFXw/9HD4\n\tUXyQ==","X-Gm-Message-State":"AHPjjUjSuWpSAgKbABWMa1tCMR14pr/qS0SqDtrUULiK1DU4erUsL3db\n\tP9eGfixLkXZtj6y5vKVI4fbEvoibWQ==","X-Google-Smtp-Source":"ADKCNb5GTz+pdRx55021OYWz4jkvsomPp5RtZWa0gpS1NnNaeCF5r/A1Mv6g4euqA0r/IpnWJf3IejFZiT/4Knawylo=","X-Received":"by 10.202.193.65 with SMTP id r62mr519039oif.313.1504731147008; \n\tWed, 06 Sep 2017 13:52:27 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<1504281966-6199-3-git-send-email-oleksandrs@mellanox.com>","References":"<1504281966-6199-1-git-send-email-oleksandrs@mellanox.com>\n\t<1504281966-6199-3-git-send-email-oleksandrs@mellanox.com>","From":"Arnd Bergmann <arnd@arndb.de>","Date":"Wed, 6 Sep 2017 22:52:26 +0200","X-Google-Sender-Auth":"5paTLAYr-MhdgCIcI1DQIdEMlRQ","Message-ID":"<CAK8P3a1Ym1UxbFyeUBrSBeHnoQh9NtBn5r6iVEjU_1ki_p3W5A@mail.gmail.com>","Subject":"Re: [patch v7 2/4] drivers: jtag: Add Aspeed SoC 24xx and 25xx\n\tfamilies JTAG master driver","To":"Oleksandr Shamray <oleksandrs@mellanox.com>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170906_135248_129809_1FC7A8BB ","X-CRM114-Status":"GOOD (  12.88  )","X-Spam-Score":"-1.7 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.7 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\n\ttrust [2607:f8b0:4003:c06:0:0:0:243 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (arndbergmann[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.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\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, Mauro Carvalho Chehab <mchehab@kernel.org>,\n\t=?utf-8?b?SmnFmcOtIFDDrXJrbw==?= <jiri@resnulli.us>,\n\tsystem-sw-low-level@mellanox.com, gregkh <gregkh@linuxfoundation.org>, \n\tOpenBMC Maillist <openbmc@lists.ozlabs.org>, Linux Kernel Mailing List\n\t<linux-kernel@vger.kernel.org>, \n\topenocd-devel-owner@lists.sourceforge.net, mec@shout.net, Jiri Pirko\n\t<jiri@mellanox.com>, Rob Herring <robh+dt@kernel.org>, Joel Stanley\n\t<joel@jms.id.au>, linux-serial@vger.kernel.org, vadimp@maellanox.com,\n\tTobias Klauser <tklauser@distanz.ch>, \n\tLinux API <linux-api@vger.kernel.org>,\n\tDavid Miller <davem@davemloft.net>, Linux ARM\n\t<linux-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":1765060,"web_url":"http://patchwork.ozlabs.org/comment/1765060/","msgid":"<CACPK8XeV9aBY+avimjiOsKZgzj-C6MTeaR0tJC-Tu+zWiAoWPw@mail.gmail.com>","list_archive_url":null,"date":"2017-09-08T03:36:57","subject":"Re: [patch v7 2/4] drivers: jtag: Add Aspeed SoC 24xx and 25xx\n\tfamilies JTAG master driver","submitter":{"id":48628,"url":"http://patchwork.ozlabs.org/api/people/48628/","name":"Joel Stanley","email":"joel@jms.id.au"},"content":"Hello Oleksandr,\n\nOn Sat, Sep 2, 2017 at 1:36 AM, Oleksandr Shamray\n<oleksandrs@mellanox.com> wrote:\n> Driver adds support of Aspeed 2500/2400 series SOC JTAG master controller.\n\nLooks good. I have some small comments. The most important is the\ncompatible string.\n\n\n> --- a/drivers/jtag/Kconfig\n> +++ b/drivers/jtag/Kconfig\n> @@ -14,3 +14,16 @@ menuconfig JTAG\n>\n>           To compile this driver as a module, choose M here: the module will\n>           be called jtag.\n> +\n> +menuconfig JTAG_ASPEED\n> +       tristate \"Aspeed SoC JTAG controller support\"\n> +       depends on JTAG && HAS_IOMEM\n\nYou could add this if you want:\n\n depends ARCH_ASPEED || COMPILE_TEST\n\n> +       ---help---\n> +         This provides a support for Aspeed JTAG device, equipped on\n> +         Aspeed SoC 24xx and 25xx families. Drivers allows programming\n> +         of hardware devices, connected to SoC through the JTAG interface.\n> +\n\n> +\n> +static char *end_status_str[] = {\"idle\", \"ir pause\", \"drpause\"};\n> +\n> +static u32 aspeed_jtag_read(struct aspeed_jtag *aspeed_jtag, u32 reg)\n> +{\n> +       return readl(aspeed_jtag->reg_base + reg);\n> +}\n> +\n> +static void\n> +aspeed_jtag_write(struct aspeed_jtag *aspeed_jtag, u32 val, u32 reg)\n> +{\n> +       writel(val, aspeed_jtag->reg_base + reg);\n> +}\n> +\n> +static int aspeed_jtag_freq_set(struct jtag *jtag, __u32 freq)\n\nWhat's the __u32 for (the __ part)?\n\n> +{\n> +       struct aspeed_jtag *aspeed_jtag = jtag_priv(jtag);\n> +       unsigned long apb_frq;\n> +       u32 tck_val;\n> +       u16 div;\n> +\n> +       apb_frq = clk_get_rate(aspeed_jtag->pclk);\n> +       div = (apb_frq % freq == 0) ? (apb_frq / freq) - 1 : (apb_frq / freq);\n> +       tck_val = aspeed_jtag_read(aspeed_jtag, ASPEED_JTAG_TCK);\n> +       aspeed_jtag_write(aspeed_jtag,\n> +                         (tck_val & ASPEED_JTAG_TCK_DIVISOR_MASK) | div,\n> +                         ASPEED_JTAG_TCK);\n> +       return 0;\n> +}\n\n> +\n> +static int aspeed_jtag_xfer(struct jtag *jtag, struct jtag_xfer *xfer)\n> +{\n> +       static const char sm_update_shiftir[] = {1, 1, 0, 0};\n> +       static const char sm_update_shiftdr[] = {1, 0, 0};\n> +       static const char sm_pause_idle[] = {1, 1, 0};\n> +       static const char sm_pause_update[] = {1, 1};\n\nNit: I was confused by the char, perhaps u8?\n\n> +int aspeed_jtag_init(struct platform_device *pdev,\n> +                    struct aspeed_jtag *aspeed_jtag)\n> +{\n> +       struct resource *res;\n> +       int err;\n> +\n> +       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);\n> +       aspeed_jtag->reg_base = devm_ioremap_resource(aspeed_jtag->dev, res);\n> +       if (IS_ERR(aspeed_jtag->reg_base)) {\n> +               err = -ENOMEM;\n> +               goto out_region;\n\nCan you just return here?\n\n> +       }\n> +\n> +       aspeed_jtag->pclk = devm_clk_get(aspeed_jtag->dev, NULL);\n> +       if (IS_ERR(aspeed_jtag->pclk)) {\n> +               dev_err(aspeed_jtag->dev, \"devm_clk_get failed\\n\");\n> +               return PTR_ERR(aspeed_jtag->pclk);\n> +       }\n> +\n> +       clk_prepare_enable(aspeed_jtag->pclk);\n> +\n> +       aspeed_jtag->irq = platform_get_irq(pdev, 0);\n> +       if (aspeed_jtag->irq < 0) {\n> +               dev_err(aspeed_jtag->dev, \"no irq specified\\n\");\n> +               err = -ENOENT;\n> +               goto out_region;\n> +       }\n> +\n> +       /* Enable clock */\n> +       aspeed_jtag_write(aspeed_jtag, ASPEED_JTAG_CTL_ENG_EN |\n> +                         ASPEED_JTAG_CTL_ENG_OUT_EN, ASPEED_JTAG_CTRL);\n> +       aspeed_jtag_write(aspeed_jtag, ASPEED_JTAG_SW_MODE_EN |\n> +                         ASPEED_JTAG_SW_MODE_TDIO, ASPEED_JTAG_SW);\n> +\n> +       err = devm_request_irq(aspeed_jtag->dev, aspeed_jtag->irq,\n> +                              aspeed_jtag_interrupt, 0,\n> +                              \"aspeed-jtag\", aspeed_jtag);\n> +       if (err) {\n> +               dev_err(aspeed_jtag->dev, \"aspeed_jtag unable to get IRQ\");\n> +               goto out_region;\n> +       }\n\nCan we grab the IRQ before enabling the clock? If not, we should\ndisable the clock in the error path.\n\n\n> +       dev_dbg(&pdev->dev, \"aspeed_jtag:IRQ %d.\\n\", aspeed_jtag->irq);\n> +\n> +       aspeed_jtag_write(aspeed_jtag, ASPEED_JTAG_ISR_INST_PAUSE |\n> +                         ASPEED_JTAG_ISR_INST_COMPLETE |\n> +                         ASPEED_JTAG_ISR_DATA_PAUSE |\n> +                         ASPEED_JTAG_ISR_DATA_COMPLETE |\n> +                         ASPEED_JTAG_ISR_INST_PAUSE_EN |\n> +                         ASPEED_JTAG_ISR_INST_COMPLETE_EN |\n> +                         ASPEED_JTAG_ISR_DATA_PAUSE_EN |\n> +                         ASPEED_JTAG_ISR_DATA_COMPLETE_EN,\n> +                         ASPEED_JTAG_ISR);\n> +\n> +       aspeed_jtag->flag = 0;\n> +       init_waitqueue_head(&aspeed_jtag->jtag_wq);\n> +       return 0;\n> +\n> +out_region:\n> +       release_mem_region(res->start, resource_size(res));\n\nI don't think this is necessary.\n\n> +       return err;\n> +}\n> +\n> +int aspeed_jtag_deinit(struct platform_device *pdev,\n> +                      struct aspeed_jtag *aspeed_jtag)\n> +{\n> +       aspeed_jtag_write(aspeed_jtag, 0, ASPEED_JTAG_ISR);\n> +       devm_free_irq(aspeed_jtag->dev, aspeed_jtag->irq, aspeed_jtag);\n\nThe IRQ freeing happen automatically thanks to devm.\n\n> +       /* Disabe clock */\n\nDisable\n\n> +       aspeed_jtag_write(aspeed_jtag, 0, ASPEED_JTAG_CTRL);\n> +       clk_disable_unprepare(aspeed_jtag->pclk);\n> +       return 0;\n> +}\n> +\n> +static const struct jtag_ops aspeed_jtag_ops = {\n> +       .freq_get = aspeed_jtag_freq_get,\n> +       .freq_set = aspeed_jtag_freq_set,\n> +       .status_get = aspeed_jtag_status_get,\n> +       .idle = aspeed_jtag_idle,\n> +       .xfer = aspeed_jtag_xfer\n> +};\n> +\n> +static int aspeed_jtag_probe(struct platform_device *pdev)\n> +{\n> +       struct aspeed_jtag *aspeed_jtag;\n> +       struct jtag *jtag;\n> +       int err;\n> +\n> +       if (!of_device_is_compatible(pdev->dev.of_node, \"aspeed,aspeed-jtag\"))\n> +               return -ENOMEM;\n> +\n> +       jtag = jtag_alloc(sizeof(*aspeed_jtag), &aspeed_jtag_ops);\n> +       if (!jtag)\n> +               return -ENODEV;\n> +\n> +       platform_set_drvdata(pdev, jtag);\n> +       aspeed_jtag = jtag_priv(jtag);\n> +       aspeed_jtag->dev = &pdev->dev;\n> +\n> +       /* Initialize device*/\n> +       err = aspeed_jtag_init(pdev, aspeed_jtag);\n> +       if (err)\n> +               goto err_jtag_init;\n> +\n> +       /* Initialize JTAG core structure*/\n> +       err = jtag_register(jtag);\n> +       if (err)\n> +               goto err_jtag_register;\n> +\n> +       return 0;\n> +\n> +err_jtag_register:\n> +       aspeed_jtag_deinit(pdev, aspeed_jtag);\n> +err_jtag_init:\n> +       jtag_free(jtag);\n> +       return err;\n> +}\n> +\n> +static int aspeed_jtag_remove(struct platform_device *pdev)\n> +{\n> +       struct jtag *jtag;\n> +\n> +       jtag = platform_get_drvdata(pdev);\n> +       aspeed_jtag_deinit(pdev, jtag_priv(jtag));\n> +       jtag_unregister(jtag);\n> +       jtag_free(jtag);\n> +       return 0;\n> +}\n> +\n> +static const struct of_device_id aspeed_jtag_of_match[] = {\n> +       { .compatible = \"aspeed,aspeed2400-jtag\", },\n> +       { .compatible = \"aspeed,aspeed2500-jtag\", },\n\nThe convention is to use ast2500 for our compatible strings, so these should be:\n\n aspeed,ast2500-jtag\n aspeed,ast2400-jtag\n\nCheers,\n\nJoel","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=\"DNA1uEU9\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"HwI2wB+M\"; 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 3xpNLj6tDnz9sMN\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tFri,  8 Sep 2017 13:37:49 +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 1dqA70-0007oZ-Ao; Fri, 08 Sep 2017 03:37:46 +0000","from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dqA6v-0007iV-7a for linux-arm-kernel@lists.infradead.org;\n\tFri, 08 Sep 2017 03:37:43 +0000","by mail-lf0-x243.google.com with SMTP id m199so588566lfe.5\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tThu, 07 Sep 2017 20:37:19 -0700 (PDT)","by 10.25.79.70 with HTTP; Thu, 7 Sep 2017 20:36:57 -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:To:Subject:Message-ID:Date:From:\n\tReferences:In-Reply-To:MIME-Version:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=2czFkK0C9tpoONllTi2eb0FLeO7OrQgPgthYWFidWRk=;\n\tb=DNA1uEU9mrCxr/\n\tDINL1lwxMazldB7WaZkF/Ko9yyxPE6VVoCVyHt9XqKaEMrTvjqLbKTiJmgeLK1lNog7LZBAmrHQQi\n\tqBJTy6n6CFNkWT5PlbYerGurEpKtH7wXyvEtedWXDXmtzZNjGG4ukhShtQMlT49eRbPNCKqPeBu6Y\n\tN4NzoeAR83xUnA2gJ6vX1q9p7RhAl3cAcgFsVL1SFZQ4OyuzHL+4EkzeGtK2UoEHAbxYXgIaPvo1w\n\t4eIeVfkBDEDWAGr1967oTin39l6JtLXUciyiF7/CYQ/hc6QQvTzOjzovcX3hQjdAucdMawWYxijET\n\tojTyx5Vn3zJbnpzq8Shw==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=mime-version:sender:in-reply-to:references:from:date:message-id\n\t:subject:to:cc;\n\tbh=ZvJd0yoNFX6VisP8gcT2i4FIlBdEWUkqNS19LXktIRI=;\n\tb=HwI2wB+MGxh3kWP49IEVEeDPczhdK0JnbOZxQXwzyVcZRYeWaxI8lv10NF/3AUFzUm\n\tFhkmIeqK59rsC5erhHJguRVWYjaXtWuRyiurr0ecMnTgWCFcLXSlYUF2XrVkSG3QNCiq\n\tdDXPqjimZV6wyXn9QGK81SIWQfYuueXwDrSBBjYHr4KqeNIC4Fi1LIuPWQYfDvKc6rPV\n\twq7NmZZZFyXBB9cyC5hCHho+RiBdTdrr2l8Qmi/wp5jJnPz3QARkhQRrMJrKdHLwVteV\n\tSGtcY5a8b8AmMXJvVLYhxJUoAAAC2e6YD+ORsqmKgeCbpdoJfA0r+d96dDhznrxsvuIv\n\tMjag=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:sender:in-reply-to:references:from\n\t:date:message-id:subject:to:cc;\n\tbh=ZvJd0yoNFX6VisP8gcT2i4FIlBdEWUkqNS19LXktIRI=;\n\tb=hQGyNXsp2ci+iqwz/+qX0pJbn9Qx7dscs3q7fRisaYxFA7z2Z0N0Tykhnxioz0waQf\n\tgr2eti2ex1ce3kRBRLucTpZVx8TgXTAi7tUY7N1YT6gRnPA18eKth+JZ65Mb4M/4/Zum\n\tCK0VHgFkxvbM96/MPM6AX9oQPr2DPxUlRqvB1QmAjy58ctDLfWNTymLFGs0HYxI19SJQ\n\tv0lWQY4II+3PvUA+Ro2Vh0bHp0/ZlpG+5JOJ8FBBZ7GVzmncVx5YYzvyWo/2uKheT5mF\n\tN4J0iWubeubWPIjFlpvMfmmQONOu26mTDyRB477SGZCazo2F7rAjcKEgBDWFOOFKA6p5\n\tD6Eg==","X-Gm-Message-State":"AHPjjUgg+dxOuVese1tWVZCB1BJFOrvU099jRPb0CKHfyFtkQ4eVubyW\n\tZ/TeKqbAHaNog8I0uhiww4KAV8VAIQ==","X-Google-Smtp-Source":"AOwi7QAJA4Xv3ROc23sC0GQWfMPq2QQ6FdfHtzV7F8RMS9ZHAMWQK5Gi7LAMgL80wLHb7BmpxGyvYupoRe+4ux4rnzo=","X-Received":"by 10.46.88.22 with SMTP id m22mr385279ljb.138.1504841838283;\n\tThu, 07 Sep 2017 20:37:18 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<1504281966-6199-3-git-send-email-oleksandrs@mellanox.com>","References":"<1504281966-6199-1-git-send-email-oleksandrs@mellanox.com>\n\t<1504281966-6199-3-git-send-email-oleksandrs@mellanox.com>","From":"Joel Stanley <joel@jms.id.au>","Date":"Fri, 8 Sep 2017 13:06:57 +0930","X-Google-Sender-Auth":"MRHARrM6WB_sqRNjUpVPHhlMXBc","Message-ID":"<CACPK8XeV9aBY+avimjiOsKZgzj-C6MTeaR0tJC-Tu+zWiAoWPw@mail.gmail.com>","Subject":"Re: [patch v7 2/4] drivers: jtag: Add Aspeed SoC 24xx and 25xx\n\tfamilies JTAG master driver","To":"Oleksandr Shamray <oleksandrs@mellanox.com>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170907_203741_682230_53A33789 ","X-CRM114-Status":"GOOD (  19.06  )","X-Spam-Score":"-1.7 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.7 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (joel.stan[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.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\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 <devicetree@vger.kernel.org>, mchehab@kernel.org,\n\tjiri@resnulli.us, Arnd Bergmann <arnd@arndb.de>,\n\tsystem-sw-low-level@mellanox.com, Greg KH <gregkh@linuxfoundation.org>,\n\tOpenBMC Maillist <openbmc@lists.ozlabs.org>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>,\n\topenocd-devel-owner@lists.sourceforge.net, mec@shout.net,\n\tJiri Pirko <jiri@mellanox.com>, Rob Herring <robh+dt@kernel.org>,\n\tlinux-serial@vger.kernel.org, vadimp@maellanox.com,\n\tTobias Klauser <tklauser@distanz.ch>, linux-api@vger.kernel.org,\n\t\"David S . Miller\" <davem@davemloft.net>,\n\tLinux ARM <linux-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":1765064,"web_url":"http://patchwork.ozlabs.org/comment/1765064/","msgid":"<CACPK8XeUtBXCZATNtK4K-kue3wmH34X3s6hNh0_1p2z7eNSoiQ@mail.gmail.com>","list_archive_url":null,"date":"2017-09-08T03:41:06","subject":"Re: [patch v7 3/4] Documentation: jtag: Add bindings for Aspeed SoC\n\t24xx and 25xx families JTAG master driver","submitter":{"id":48628,"url":"http://patchwork.ozlabs.org/api/people/48628/","name":"Joel Stanley","email":"joel@jms.id.au"},"content":"On Sat, Sep 2, 2017 at 1:36 AM, Oleksandr Shamray\n<oleksandrs@mellanox.com> wrote:\n> diff --git a/Documentation/devicetree/bindings/jtag/aspeed-jtag.txt b/Documentation/devicetree/bindings/jtag/aspeed-jtag.txt\n> new file mode 100644\n> index 0000000..f4ded49\n> --- /dev/null\n> +++ b/Documentation/devicetree/bindings/jtag/aspeed-jtag.txt\n> @@ -0,0 +1,18 @@\n> +Aspeed JTAG driver for ast2400 and ast2500 SoC\n> +\n> +Required properties:\n> +- compatible:          Should be one of\n> +      - \"aspeed,aspeed2400-jtag\"\n> +      - \"aspeed,aspeed2500-jtag\"\n\nPlease use aspeed,ast2500-jtag and aspeed,ast2400-jtag.\n\nCheers,\n\nJoel","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=\"RKYdjNP+\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"G/DAnNbf\"; 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 3xpNRR6Zfjz9ryk\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tFri,  8 Sep 2017 13:41:55 +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 1dqAAy-0001dw-UG; Fri, 08 Sep 2017 03:41:52 +0000","from mail-lf0-x244.google.com ([2a00:1450:4010:c07::244])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dqAAv-0001Yc-Hm for linux-arm-kernel@lists.infradead.org;\n\tFri, 08 Sep 2017 03:41:51 +0000","by mail-lf0-x244.google.com with SMTP id c8so596505lfe.2\n\tfor <linux-arm-kernel@lists.infradead.org>;\n\tThu, 07 Sep 2017 20:41:29 -0700 (PDT)","by 10.25.79.70 with HTTP; Thu, 7 Sep 2017 20:41:06 -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:To:Subject:Message-ID:Date:From:\n\tReferences:In-Reply-To:MIME-Version:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=MLsuqMcIQK6fK/HBqvi80hJi5K9OUJFyQ7z0d9ZYy9g=;\n\tb=RKYdjNP+oxRaYT\n\tTjLs7OlQfy9KLml9/BC/mu/krMntEFSi8LbOVCLmGWvWbJhglKY6WXShQEjVQj9QowuHE9xGovgDG\n\tXJhO18yKgpPr+fjh2Z75pvv6cXHOM0HzSW8M5VF9Ry0R4hHruWJ2f/jRKv+Fi5wshFvtVfFcz5gL9\n\twNOkcXsbZ+42VZYJNaeSGBhNZ198STTNWLKE17jGncSNW18GP4iUYcYFfxzhaWI8yJaE6GLvbo4Jv\n\tMp2z0vkqfruHS1kXgpJiYh2E7VYqbz3sqVLszODr1j6keY9XANhKdworQ4FSTHUDkFkBYhDpulxoL\n\tYHBZTtRO600H3Kb2pbcw==;","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=mime-version:sender:in-reply-to:references:from:date:message-id\n\t:subject:to:cc;\n\tbh=ON5QJL3LtTpA/Z9Z/IJb/nXNiqhAaNQJi1gpyfHTmko=;\n\tb=G/DAnNbfC85GkUsKAaKFfc6lQCos2rdgOvOPNJJ1eIJ3/uw5mGkFzEOBPsceQHBxtj\n\tVZyjjrVQmGP+IGL8lsVfRMwy6ee1B3HGh2DfXkbPCgmi3YBXnDNvLPtx0ZOlzvrVoaMM\n\t4mt3E+7uDrTnNpSfLwWenhUAThy2F4yYMx9LBYpMnMjpX+Ma4mK5rDDGSG0vZ1hhS2H4\n\t/iNBolRSXG24LU5lzXvqlBiLdOJlEmBRXcbLwJLUwfg+rYbjrIJlCcVxg+4Ks3IMUGhH\n\tA2sCbyH+KLj9E6suKLzPxFOgnjOTu1x2/ifsNdOcP0e/oXvXAJtHpjK2VuuAlOtH7gPA\n\tXp3A=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:sender:in-reply-to:references:from\n\t:date:message-id:subject:to:cc;\n\tbh=ON5QJL3LtTpA/Z9Z/IJb/nXNiqhAaNQJi1gpyfHTmko=;\n\tb=BFs4loPJ1pbG7Zl/hNcgavd4o4baiGzJAClqi2m5DtzzNLNd4h3oWKnVS74obIph56\n\tLTMa0irUh4e11BtUizxovCRJlM+NF1gwFk5k2LX4psbeZ0QWGj02YYTfK5Nfn3S+Svtz\n\tQOn2AzGcF2Df2eNnVxU4WSTJ0M5hKNZ6UviTgfC0i0VTUwI+nPBjz+DeFLXIwDvyoZeZ\n\tPHtBYBSZWJ9qZuHcwgQsguaMFVYAIvhVQwBGmM+IsxYBnEy9c3qJfAEJu/QaHN1b5lKO\n\tfJCfjVwJE9FRtMCWMglfPNf162X0gkC70LrbSc+unUsqOuupoG8f88WD8fw3a66+xV58\n\tyfWA==","X-Gm-Message-State":"AHPjjUg9AJ6kQ7XqJTrS3OkZ8Rt1Z3orkkOjIKnonw1NV5EK61ykB6SM\n\tSlGLRRfdO0G3pPSwuZctKfA0lNn2Qg==","X-Google-Smtp-Source":"AOwi7QAiTkgV59p6Med/VtuihxFsF3fYe6OvriyDX55k6NeX34YLlFNLhJUu0tN5hd0+AP1Pb35NsKVauy7x2dWejXE=","X-Received":"by 10.25.143.27 with SMTP id r27mr475189lfd.85.1504842087421;\n\tThu, 07 Sep 2017 20:41:27 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<1504281966-6199-4-git-send-email-oleksandrs@mellanox.com>","References":"<1504281966-6199-1-git-send-email-oleksandrs@mellanox.com>\n\t<1504281966-6199-4-git-send-email-oleksandrs@mellanox.com>","From":"Joel Stanley <joel@jms.id.au>","Date":"Fri, 8 Sep 2017 13:11:06 +0930","X-Google-Sender-Auth":"E1FpU_2ZqV4ONPlW2oM4qsNMGDE","Message-ID":"<CACPK8XeUtBXCZATNtK4K-kue3wmH34X3s6hNh0_1p2z7eNSoiQ@mail.gmail.com>","Subject":"Re: [patch v7 3/4] Documentation: jtag: Add bindings for Aspeed SoC\n\t24xx and 25xx families JTAG master driver","To":"Oleksandr Shamray <oleksandrs@mellanox.com>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170907_204149_779175_A544E6DB ","X-CRM114-Status":"GOOD (  10.91  )","X-Spam-Score":"-1.7 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.7 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\n\ttrust [2a00:1450:4010:c07:0:0:0:244 listed in] [list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n\tprovider (joel.stan[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.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\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 <devicetree@vger.kernel.org>, mchehab@kernel.org,\n\tjiri@resnulli.us, Arnd Bergmann <arnd@arndb.de>,\n\tsystem-sw-low-level@mellanox.com, Greg KH <gregkh@linuxfoundation.org>,\n\tOpenBMC Maillist <openbmc@lists.ozlabs.org>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>,\n\topenocd-devel-owner@lists.sourceforge.net, mec@shout.net,\n\tJiri Pirko <jiri@mellanox.com>, Rob Herring <robh+dt@kernel.org>,\n\tlinux-serial@vger.kernel.org, vadimp@maellanox.com,\n\tTobias Klauser <tklauser@distanz.ch>, linux-api@vger.kernel.org,\n\t\"David S . Miller\" <davem@davemloft.net>,\n\tLinux ARM <linux-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"}}]