From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754208AbaIPXWF (ORCPT ); Tue, 16 Sep 2014 19:22:05 -0400 Received: from mail-pa0-f46.google.com ([209.85.220.46]:45371 "EHLO mail-pa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753014AbaIPXWC (ORCPT ); Tue, 16 Sep 2014 19:22:02 -0400 Date: Tue, 16 Sep 2014 16:21:49 -0700 From: Lee Jones To: Octavian Purdila Cc: gregkh@linuxfoundation.org, linus.walleij@linaro.org, gnurou@gmail.com, wsa@the-dreams.de, sameo@linux.intel.com, arnd@arndb.de, johan@kernel.org, daniel.baluta@intel.com, laurentiu.palcu@intel.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, linux-i2c@vger.kernel.org Subject: Re: [PATCH v4 1/3] mfd: add support for Diolan DLN-2 devices Message-ID: <20140916232149.GB30918@lee--X1> References: <1410290686-6680-1-git-send-email-octavian.purdila@intel.com> <1410290686-6680-2-git-send-email-octavian.purdila@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1410290686-6680-2-git-send-email-octavian.purdila@intel.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 09 Sep 2014, Octavian Purdila wrote: > This patch implements the USB part of the Diolan USB-I2C/SPI/GPIO > Master Adapter DLN-2. Details about the device can be found here: > > https://www.diolan.com/i2c/i2c_interface.html. > > Information about the USB protocol can be found in the Programmer's > Reference Manual [1], see section 1.7. This driver really needs a USB Ack before I can accept it. > Because the hardware has a single transmit endpoint and a single > receive endpoint the communication between the various DLN2 drivers > and the hardware will be muxed/demuxed by this driver. > > Each DLN2 module will be identified by the handle field within the DLN2 > message header. If a DLN2 module issues multiple commands in parallel > they will be identified by the echo counter field in the message header. > > The DLN2 modules can use the dln2_transfer() function to issue a > command and wait for its response. They can also register a callback > that is going to be called when a specific event id is generated by > the device (e.g. GPIO interrupts). The device uses handle 0 for > sending events. > > [1] https://www.diolan.com/downloads/dln-api-manual.pdf > > Signed-off-by: Octavian Purdila > --- > drivers/mfd/Kconfig | 9 + > drivers/mfd/Makefile | 1 + > drivers/mfd/dln2.c | 681 +++++++++++++++++++++++++++++++++++++++++++++++ > include/linux/mfd/dln2.h | 71 +++++ > 4 files changed, 762 insertions(+) > create mode 100644 drivers/mfd/dln2.c > create mode 100644 include/linux/mfd/dln2.h [...] > diff --git a/drivers/mfd/dln2.c b/drivers/mfd/dln2.c > new file mode 100644 > index 0000000..b551b5e > --- /dev/null > +++ b/drivers/mfd/dln2.c > @@ -0,0 +1,681 @@ > +/* > + * Driver for the Diolan DLN-2 USB adapter > + * > + * Copyright (c) 2014 Intel Corporation > + * > + * Derived from: > + * i2c-diolan-u2c.c > + * Copyright (c) 2010-2011 Ericsson AB > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation, version 2. > + */ > + > +#include > +#include What are you using this for? > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#define DRIVER_NAME "usb-dln2" Don't do this, just use "usb-dln2" where it needs to be used. [...] > +static struct usb_driver dln2_driver = { > + .name = DRIVER_NAME, > + .probe = dln2_probe, > + .disconnect = dln2_disconnect, > + .id_table = dln2_table, > +}; > + > +module_usb_driver(dln2_driver); > + > +MODULE_AUTHOR("Octavian Purdila "); > +MODULE_DESCRIPTION(DRIVER_NAME " driver"); This is not a description. > +MODULE_LICENSE("GPL"); Header says v2. > diff --git a/include/linux/mfd/dln2.h b/include/linux/mfd/dln2.h > new file mode 100644 > index 0000000..197565d > --- /dev/null > +++ b/include/linux/mfd/dln2.h > @@ -0,0 +1,71 @@ > +#ifndef __LINUX_USB_DLN2_H > +#define __LINUX_USB_DLN2_H > + > +#define DLN2_CMD(cmd, id) ((cmd) | ((id) << 8)) > + > +struct dln2_platform_data { > + u16 handle; > + union { > + struct { > + u8 port; > + } i2c; > + }; > +}; Why this complexity? -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog