diff mbox

usb: m66592-udc buffer management update

Message ID 20090626065917.22683.38507.sendpatchset@rx1.opensource.se (mailing list archive)
State Accepted
Headers show

Commit Message

Magnus Damm June 26, 2009, 6:59 a.m. UTC
From: Magnus Damm <damm@igel.co.jp>

This patch updates the m66592-udc buffer management code.

Use fixed buffers for bulk and isochronous pipes, also make
sure to handle the isochronous-as-bulk case. With fixed buffers
there is no need to keep track of used buffers with bi_bufnum.

Also, this fixes a potential buffer offset problem where the
base offset incorrectly varies with the number of pipes used.

With this patch applied it is possible to use m66592-udc for
both Ethernet and Serial using CONFIG_USB_CDC_COMPOSITE.

Signed-off-by: Magnus Damm <damm@igel.co.jp>
---

 This patch is the same as before but sent to the correct usb list, duh.

 Tested on SH7722 Migo-R.

 drivers/usb/gadget/m66592-udc.c |   34 ++++++++++++----------------------
 drivers/usb/gadget/m66592-udc.h |    1 -
 2 files changed, 12 insertions(+), 23 deletions(-)

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

Comments

Yoshihiro Shimoda July 1, 2009, 12:23 p.m. UTC | #1
Magnus Damm wrote:
> From: Magnus Damm <damm@igel.co.jp>
> 
> This patch updates the m66592-udc buffer management code.
> 
> Use fixed buffers for bulk and isochronous pipes, also make
> sure to handle the isochronous-as-bulk case. With fixed buffers
> there is no need to keep track of used buffers with bi_bufnum.
> 
> Also, this fixes a potential buffer offset problem where the
> base offset incorrectly varies with the number of pipes used.
> 
> With this patch applied it is possible to use m66592-udc for
> both Ethernet and Serial using CONFIG_USB_CDC_COMPOSITE.
> 
> Signed-off-by: Magnus Damm <damm@igel.co.jp>

Thank you for your patch.
I also thought that this management method was good.
In addition, thank you for finding a potential problem.
I tested this patch and confirmed it is working.

Thanks,
Yoshihiro Shimoda
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Yoshihiro Shimoda July 3, 2009, 8:34 a.m. UTC | #2
Yoshihiro Shimoda wrote:
> Magnus Damm wrote:
>> From: Magnus Damm <damm@igel.co.jp>
>>
>> This patch updates the m66592-udc buffer management code.
>>
>> Use fixed buffers for bulk and isochronous pipes, also make
>> sure to handle the isochronous-as-bulk case. With fixed buffers
>> there is no need to keep track of used buffers with bi_bufnum.
>>
>> Also, this fixes a potential buffer offset problem where the
>> base offset incorrectly varies with the number of pipes used.
>>
>> With this patch applied it is possible to use m66592-udc for
>> both Ethernet and Serial using CONFIG_USB_CDC_COMPOSITE.
>>
>> Signed-off-by: Magnus Damm <damm@igel.co.jp>
> 
> Thank you for your patch.
> I also thought that this management method was good.
> In addition, thank you for finding a potential problem.
> I tested this patch and confirmed it is working.

I'm sorry. I forgot to write the Acked-by:

Acked-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>

Thanks,
Yoshihiro Shimoda
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paul Mundt July 3, 2009, 8:37 a.m. UTC | #3
On Fri, Jul 03, 2009 at 05:34:41PM +0900, Yoshihiro Shimoda wrote:
> Yoshihiro Shimoda wrote:
> > Magnus Damm wrote:
> >> From: Magnus Damm <damm@igel.co.jp>
> >>
> >> This patch updates the m66592-udc buffer management code.
> >>
> >> Use fixed buffers for bulk and isochronous pipes, also make
> >> sure to handle the isochronous-as-bulk case. With fixed buffers
> >> there is no need to keep track of used buffers with bi_bufnum.
> >>
> >> Also, this fixes a potential buffer offset problem where the
> >> base offset incorrectly varies with the number of pipes used.
> >>
> >> With this patch applied it is possible to use m66592-udc for
> >> both Ethernet and Serial using CONFIG_USB_CDC_COMPOSITE.
> >>
> >> Signed-off-by: Magnus Damm <damm@igel.co.jp>
> > 
> > Thank you for your patch.
> > I also thought that this management method was good.
> > In addition, thank you for finding a potential problem.
> > I tested this patch and confirmed it is working.
> 
> I'm sorry. I forgot to write the Acked-by:
> 
> Acked-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
> 
Greg, any preferences? I was planning on just rolling this in to my
2.6.32 queue unless you have any objections.
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Greg KH July 3, 2009, 5:07 p.m. UTC | #4
On Fri, Jul 03, 2009 at 05:37:47PM +0900, Paul Mundt wrote:
> On Fri, Jul 03, 2009 at 05:34:41PM +0900, Yoshihiro Shimoda wrote:
> > Yoshihiro Shimoda wrote:
> > > Magnus Damm wrote:
> > >> From: Magnus Damm <damm@igel.co.jp>
> > >>
> > >> This patch updates the m66592-udc buffer management code.
> > >>
> > >> Use fixed buffers for bulk and isochronous pipes, also make
> > >> sure to handle the isochronous-as-bulk case. With fixed buffers
> > >> there is no need to keep track of used buffers with bi_bufnum.
> > >>
> > >> Also, this fixes a potential buffer offset problem where the
> > >> base offset incorrectly varies with the number of pipes used.
> > >>
> > >> With this patch applied it is possible to use m66592-udc for
> > >> both Ethernet and Serial using CONFIG_USB_CDC_COMPOSITE.
> > >>
> > >> Signed-off-by: Magnus Damm <damm@igel.co.jp>
> > > 
> > > Thank you for your patch.
> > > I also thought that this management method was good.
> > > In addition, thank you for finding a potential problem.
> > > I tested this patch and confirmed it is working.
> > 
> > I'm sorry. I forgot to write the Acked-by:
> > 
> > Acked-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
> > 
> Greg, any preferences? I was planning on just rolling this in to my
> 2.6.32 queue unless you have any objections.

No objection from me, please do so.

Acked-by: Greg Kroah-Hartman <gregkh@suse.de>

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paul Mundt July 4, 2009, 3:37 p.m. UTC | #5
On Fri, Jul 03, 2009 at 10:07:23AM -0700, Greg KH wrote:
> On Fri, Jul 03, 2009 at 05:37:47PM +0900, Paul Mundt wrote:
> > On Fri, Jul 03, 2009 at 05:34:41PM +0900, Yoshihiro Shimoda wrote:
> > > Yoshihiro Shimoda wrote:
> > > > Magnus Damm wrote:
> > > >> From: Magnus Damm <damm@igel.co.jp>
> > > >>
> > > >> This patch updates the m66592-udc buffer management code.
> > > >>
> > > >> Use fixed buffers for bulk and isochronous pipes, also make
> > > >> sure to handle the isochronous-as-bulk case. With fixed buffers
> > > >> there is no need to keep track of used buffers with bi_bufnum.
> > > >>
> > > >> Also, this fixes a potential buffer offset problem where the
> > > >> base offset incorrectly varies with the number of pipes used.
> > > >>
> > > >> With this patch applied it is possible to use m66592-udc for
> > > >> both Ethernet and Serial using CONFIG_USB_CDC_COMPOSITE.
> > > >>
> > > >> Signed-off-by: Magnus Damm <damm@igel.co.jp>
> > > > 
> > > > Thank you for your patch.
> > > > I also thought that this management method was good.
> > > > In addition, thank you for finding a potential problem.
> > > > I tested this patch and confirmed it is working.
> > > 
> > > I'm sorry. I forgot to write the Acked-by:
> > > 
> > > Acked-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
> > > 
> > Greg, any preferences? I was planning on just rolling this in to my
> > 2.6.32 queue unless you have any objections.
> 
> No objection from me, please do so.
> 
> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
> 
Done, thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

--- 0001/drivers/usb/gadget/m66592-udc.c
+++ work/drivers/usb/gadget/m66592-udc.c	2009-06-26 15:12:37.000000000 +0900
@@ -37,7 +37,7 @@  MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Yoshihiro Shimoda");
 MODULE_ALIAS("platform:m66592_udc");
 
-#define DRIVER_VERSION	"18 Oct 2007"
+#define DRIVER_VERSION	"26 Jun 2009"
 
 /* module parameters */
 #if defined(CONFIG_SUPERH_BUILT_IN_M66592)
@@ -276,24 +276,27 @@  static int pipe_buffer_setting(struct m6
 		buf_bsize = 0;
 		break;
 	case M66592_BULK:
-		bufnum = m66592->bi_bufnum +
-			 (info->pipe - M66592_BASE_PIPENUM_BULK) * 16;
-		m66592->bi_bufnum += 16;
+		/* isochronous pipes may be used as bulk pipes */
+		if (info->pipe > M66592_BASE_PIPENUM_BULK)
+			bufnum = info->pipe - M66592_BASE_PIPENUM_BULK;
+		else
+			bufnum = info->pipe - M66592_BASE_PIPENUM_ISOC;
+
+		bufnum = M66592_BASE_BUFNUM + (bufnum * 16);
 		buf_bsize = 7;
 		pipecfg |= M66592_DBLB;
 		if (!info->dir_in)
 			pipecfg |= M66592_SHTNAK;
 		break;
 	case M66592_ISO:
-		bufnum = m66592->bi_bufnum +
+		bufnum = M66592_BASE_BUFNUM +
 			 (info->pipe - M66592_BASE_PIPENUM_ISOC) * 16;
-		m66592->bi_bufnum += 16;
 		buf_bsize = 7;
 		break;
 	}
-	if (m66592->bi_bufnum > M66592_MAX_BUFNUM) {
-		pr_err("m66592 pipe memory is insufficient(%d)\n",
-				m66592->bi_bufnum);
+
+	if (buf_bsize && ((bufnum + 16) >= M66592_MAX_BUFNUM)) {
+		pr_err("m66592 pipe memory is insufficient\n");
 		return -ENOMEM;
 	}
 
@@ -313,17 +316,6 @@  static void pipe_buffer_release(struct m
 	if (info->pipe == 0)
 		return;
 
-	switch (info->type) {
-	case M66592_BULK:
-		if (is_bulk_pipe(info->pipe))
-			m66592->bi_bufnum -= 16;
-		break;
-	case M66592_ISO:
-		if (is_isoc_pipe(info->pipe))
-			m66592->bi_bufnum -= 16;
-		break;
-	}
-
 	if (is_bulk_pipe(info->pipe)) {
 		m66592->bulk--;
 	} else if (is_interrupt_pipe(info->pipe))
@@ -1603,8 +1595,6 @@  static int __init m66592_probe(struct pl
 	m66592->timer.data = (unsigned long)m66592;
 	m66592->reg = reg;
 
-	m66592->bi_bufnum = M66592_BASE_BUFNUM;
-
 	ret = request_irq(irq, m66592_irq, IRQF_DISABLED | IRQF_SHARED,
 			udc_name, m66592);
 	if (ret < 0) {
--- 0001/drivers/usb/gadget/m66592-udc.h
+++ work/drivers/usb/gadget/m66592-udc.h	2009-06-26 15:12:14.000000000 +0900
@@ -506,7 +506,6 @@  struct m66592 {
 	int interrupt;
 	int isochronous;
 	int num_dma;
-	int bi_bufnum;	/* bulk and isochronous's bufnum */
 };
 
 #define gadget_to_m66592(_gadget) container_of(_gadget, struct m66592, gadget)