Re: [PATCH] usb-serial: add support for USB Wishbone-serial adapters

2013-04-11 Thread Greg KH
On Thu, Apr 11, 2013 at 05:30:52PM +0200, Wesley W. Terpstra wrote:
> Is there a document that describes how to track the progress a patch
> makes on its way to a released kernel version? I understand that
> subsystem maintainers aggregate changes which then are aggregated in
> turn by Linus, but beyond that I have no understanding of the flow.

Not really, as each maintainer has a different workflow.  For example,
my scripts will email you when the patch is applied to my trees with
some information as to what is going to happen to it, and where you can
find the patch.  Other maintainers just do a short "patch applied" email
response, and others (and I personally hate this), don't say anything at
all and you have to watch and see if your patch ever gets applied
anywhere.

You might want to look at Documentation/development_model/ for some
information on how the overall process works.  If you have any questions
about it after reading this, be sure to let us know.

> Also: Thank you very much for all your help. I've made several kernel
> modules over the years, but never submitted any of them for inclusion
> because I had the (it seems false) impression that the linux kernel
> development process was full of angry people who would make it
> unpleasant.
> 
> Glad to learn that this is just a myth!
> I will probably contribute more patches in the future.

That's good to hear.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] usb-serial: add support for USB Wishbone-serial adapters

2013-04-11 Thread Wesley W. Terpstra
On Thu, 2013-04-11 at 08:15 -0700, Greg KH wrote:
> Fair enough, although this driver would probably be the least of our
> worries if that were to happen :)
Of course.

> Documenation/stable_api_nonsense.txt
Tactfully named. :)

Is there a document that describes how to track the progress a patch
makes on its way to a released kernel version? I understand that
subsystem maintainers aggregate changes which then are aggregated in
turn by Linus, but beyond that I have no understanding of the flow.

Also: Thank you very much for all your help. I've made several kernel
modules over the years, but never submitted any of them for inclusion
because I had the (it seems false) impression that the linux kernel
development process was full of angry people who would make it
unpleasant.

Glad to learn that this is just a myth!
I will probably contribute more patches in the future.


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] usb-serial: add support for USB Wishbone-serial adapters

2013-04-11 Thread Greg KH
On Thu, Apr 11, 2013 at 03:54:47PM +0200, Wesley W. Terpstra wrote:
> On Thu, 2013-04-11 at 06:45 -0700, Greg KH wrote:
> > I only have one very minor question about the code:
> > 
> > > +++ b/drivers/usb/serial/wishbone-serial.c
> > > @@ -0,0 +1,95 @@
> > > +/*
> > > + * USB Wishbone-Serial adapter driver
> > > + *
> > > + * Copyright (C) 2013 Wesley W. Terpstra 
> > > + * Copyright (C) 2013 GSI Helmholtz Centre for Heavy Ion Research GmbH
> > > + *
> > > + * 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; either version 2
> > > + * of the License, or (at your option) any later version.
> > > + */
> > 
> > Do you really mean "or any later version" for the license of this
> > driver?  I ask as the kernel itself is GPLv2-only.  It's fine if you
> > want this to be GPLv2+, I just have to ask.
> 
> Yes, I know the kernel is v2. Which is a shame because the FSF made the
> v3 licence which some people would prefer. If in the distant future, the
> kernel were to slowly be relicenced as v2+ or v3, I don't want to
> contribute to the migration problem.

Fair enough, although this driver would probably be the least of our
worries if that were to happen :)

> A question for you in turn: why were usb_serial_[de]register removed?

Because no one uses it anymore.

> The new usb_serial_deregister_drivers isn't available in older kernels.
> So drivers cannot support (without ifdefs) both old and new kernels

We don't support drivers outside of the Linux kernel tree very well, if
at all.  If an author wants to do that, they are on their own.  Fore
more details about this, please read the
Documenation/stable_api_nonsense.txt file in the kernel source tree.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] usb-serial: add support for USB Wishbone-serial adapters

2013-04-11 Thread Wesley W. Terpstra
On Thu, 2013-04-11 at 06:45 -0700, Greg KH wrote:
> I only have one very minor question about the code:
> 
> > +++ b/drivers/usb/serial/wishbone-serial.c
> > @@ -0,0 +1,95 @@
> > +/*
> > + * USB Wishbone-Serial adapter driver
> > + *
> > + * Copyright (C) 2013 Wesley W. Terpstra 
> > + * Copyright (C) 2013 GSI Helmholtz Centre for Heavy Ion Research GmbH
> > + *
> > + * 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; either version 2
> > + * of the License, or (at your option) any later version.
> > + */
> 
> Do you really mean "or any later version" for the license of this
> driver?  I ask as the kernel itself is GPLv2-only.  It's fine if you
> want this to be GPLv2+, I just have to ask.

Yes, I know the kernel is v2. Which is a shame because the FSF made the
v3 licence which some people would prefer. If in the distant future, the
kernel were to slowly be relicenced as v2+ or v3, I don't want to
contribute to the migration problem.

A question for you in turn: why were usb_serial_[de]register removed?
The new usb_serial_deregister_drivers isn't available in older kernels.
So drivers cannot support (without ifdefs) both old and new kernels


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] usb-serial: add support for USB Wishbone-serial adapters

2013-04-11 Thread Greg KH
On Thu, Apr 11, 2013 at 03:08:20PM +0200, Wesley W. Terpstra wrote:
> Wishbone is an open hardware SoC bus commonly used in FPGA
> designs. Bus access can be serialized using the Etherbone
> protocol .
> 
> This driver is intended to be used with devices which attach
> their internal Wishbone bus to a USB serial interface using
> the Etherbone protocol. A userspace library is required to
> speak the protocol made available by this driver as ttyUSBx.
> 
> Signed-off-by: Wesley W. Terpstra 

This looks great, thanks.

I only have one very minor question about the code:

> +++ b/drivers/usb/serial/wishbone-serial.c
> @@ -0,0 +1,95 @@
> +/*
> + * USB Wishbone-Serial adapter driver
> + *
> + * Copyright (C) 2013 Wesley W. Terpstra 
> + * Copyright (C) 2013 GSI Helmholtz Centre for Heavy Ion Research GmbH
> + *
> + * 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; either version 2
> + * of the License, or (at your option) any later version.
> + */

Do you really mean "or any later version" for the license of this
driver?  I ask as the kernel itself is GPLv2-only.  It's fine if you
want this to be GPLv2+, I just have to ask.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] usb-serial: add support for USB Wishbone-serial adapters

2013-04-11 Thread Wesley W. Terpstra
Wishbone is an open hardware SoC bus commonly used in FPGA
designs. Bus access can be serialized using the Etherbone
protocol .

This driver is intended to be used with devices which attach
their internal Wishbone bus to a USB serial interface using
the Etherbone protocol. A userspace library is required to
speak the protocol made available by this driver as ttyUSBx.

Signed-off-by: Wesley W. Terpstra 
---
 drivers/usb/serial/Kconfig   |   17 ++
 drivers/usb/serial/Makefile  |1 +
 drivers/usb/serial/wishbone-serial.c |   95 ++
 3 files changed, 113 insertions(+)
 create mode 100644 drivers/usb/serial/wishbone-serial.c

diff --git a/drivers/usb/serial/Kconfig b/drivers/usb/serial/Kconfig
index 17b7f9a..504f26e 100644
--- a/drivers/usb/serial/Kconfig
+++ b/drivers/usb/serial/Kconfig
@@ -667,6 +667,23 @@ config USB_SERIAL_ZIO
  To compile this driver as a module, choose M here: the
  module will be called zio.
 
+config USB_SERIAL_WISHBONE
+   tristate "USB-Wishbone adapter interface driver"
+   help
+ Say Y here if you want to use a USB attached Wishbone bus.
+
+ Wishbone is an open hardware SoC bus commonly used in FPGA
+ designs. Bus access can be serialized using the Etherbone
+ protocol .
+
+ This driver is intended to be used with devices which attach
+ their internal Wishbone bus to a USB serial interface using
+ the Etherbone protocol. A userspace library is required to
+ speak the protocol made available by this driver as ttyUSBx.
+
+ To compile this driver as a module, choose M here: the
+ module will be called wishbone-serial.
+
 config USB_SERIAL_ZTE
tristate "ZTE USB serial driver"
help
diff --git a/drivers/usb/serial/Makefile b/drivers/usb/serial/Makefile
index eaf5ca1..cec63fa 100644
--- a/drivers/usb/serial/Makefile
+++ b/drivers/usb/serial/Makefile
@@ -58,6 +58,7 @@ obj-$(CONFIG_USB_SERIAL_SYMBOL)   += 
symbolserial.o
 obj-$(CONFIG_USB_SERIAL_WWAN)  += usb_wwan.o
 obj-$(CONFIG_USB_SERIAL_TI)+= ti_usb_3410_5052.o
 obj-$(CONFIG_USB_SERIAL_VISOR) += visor.o
+obj-$(CONFIG_USB_SERIAL_WISHBONE)  += wishbone-serial.o
 obj-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat.o
 obj-$(CONFIG_USB_SERIAL_XIRCOM)+= keyspan_pda.o
 obj-$(CONFIG_USB_SERIAL_VIVOPAY_SERIAL)+= vivopay-serial.o
diff --git a/drivers/usb/serial/wishbone-serial.c 
b/drivers/usb/serial/wishbone-serial.c
new file mode 100644
index 000..481ec66
--- /dev/null
+++ b/drivers/usb/serial/wishbone-serial.c
@@ -0,0 +1,95 @@
+/*
+ * USB Wishbone-Serial adapter driver
+ *
+ * Copyright (C) 2013 Wesley W. Terpstra 
+ * Copyright (C) 2013 GSI Helmholtz Centre for Heavy Ion Research GmbH
+ *
+ * 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; either version 2
+ * of the License, or (at your option) any later version.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#define GSI_VENDOR_OPENCLOSE 0xB0
+
+static const struct usb_device_id id_table[] = {
+   { USB_DEVICE_AND_INTERFACE_INFO(0x1D50, 0x6062, 0xFF, 0xFF, 0xFF) },
+   { },
+};
+MODULE_DEVICE_TABLE(usb, id_table);
+
+/*
+ * Etherbone must be told that a new stream has begun before data arrives.
+ * This is necessary to restart the negotiation of Wishbone bus parameters.
+ * Similarly, when the stream ends, Etherbone must be told so that the cycle
+ * line can be driven low in the case that userspace failed to do so.
+ */
+static int usb_gsi_openclose(struct usb_serial_port *port, int value)
+{
+   struct usb_device *dev = port->serial->dev;
+
+   return usb_control_msg(
+   dev,
+   usb_sndctrlpipe(dev, 0), /* Send to EP0OUT */
+   GSI_VENDOR_OPENCLOSE,
+   USB_DIR_OUT|USB_TYPE_VENDOR|USB_RECIP_INTERFACE,
+   value, /* wValue = device is open(1) or closed(0) */
+   port->serial->interface->cur_altsetting->desc.bInterfaceNumber,
+   0, 0,  /* There is no data stage */
+   5000); /* Timeout till operation fails */
+}
+
+static int wishbone_serial_open(struct tty_struct *tty,
+   struct usb_serial_port *port)
+{
+   int retval;
+
+   retval = usb_gsi_openclose(port, 1);
+   if (retval) {
+   dev_err(&port->serial->dev->dev,
+  "Could not mark device as open (%d)\n",
+  retval);
+   return retval;
+   }
+
+   retval = usb_serial_generic_open(tty, port);
+   if (retval)
+   usb_gsi_openclose(port, 0);
+
+