From: Vitaly Kuzmichev <vkuzmichev@mvista.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] usage of DMA
Date: Wed, 19 Jan 2011 12:04:17 +0300 [thread overview]
Message-ID: <4D36A911.1070302@mvista.com> (raw)
In-Reply-To: <201101181911.14722.korgull@home.nl>
Hi Marcel,
Marcel wrote:
>> Could you enable debug output for ether.c and for your UDC driver and
>> show the results?
>
> I enabled a lot of extra debugging messages so this is not very short.
> The output attached below is including start of macb but USB device behave the
> same when I don't enable that.
>
> [...]
>
> USB network up!
> ep3 status = 1040c40
> rx_submit
> size 1 = 1570
> size 2 = 2081
> size 3 = 2048
> ep2: queue req 77fec8f0, len 2048
> udc: invalid request
> NO REQUEST BUF
> Received ETH pack : 00 00 00 00 00 00 00 00
> ERROR: rx submit --> -22
> at ether.c:1289/rx_submit()
> ### main_loop entered: bootdelay=3
>
> ### main_loop: bootcmd="mtdparts default; nand read 0x71000000 nand0,0; bootm
> 0x71000000"
> Hit any key to stop autoboot: 0
> Sam9g45>
First, I don't completely understand how do you use the gadget driver.
You do not run any commands from u-boot prompt and your bootcmd does not
have any network actions.
Why your usb gadget driver becomes started?
Second, could you add the following debug printout into rx_submit and
check that NetRxPackets is really initialized?
@@ -1261,6 +1261,8 @@ static int rx_submit(struct eth_dev *dev
req->length = size;
req->complete = rx_complete;
+ printf("NetRxPackets[0] = %p !!!\n", NetRxPackets[0]);
+
retval = usb_ep_queue(dev->out_ep, req, gfp_flags);
if (retval)
---
Since NetRxPackets is defined as an array of pointers, it needs to be
initialized. And NetLoop does this:
volatile uchar *NetRxPackets[PKTBUFSRX];
...
int
NetLoop(proto_t protocol)
{
bd_t *bd = gd->bd;
...
if (!NetTxPacket) {
int i;
/*
* Setup packet buffers, aligned correctly.
*/
NetTxPacket = &PktBuf[0] + (PKTALIGN - 1);
NetTxPacket -= (ulong)NetTxPacket % PKTALIGN;
for (i = 0; i < PKTBUFSRX; i++) {
NetRxPackets[i] = NetTxPacket + (i+1)*PKTSIZE_ALIGN;
}
}
...
So I fear that your gadget is started manually. You should not do that!
The only thing that you can do with your udc driver during the board
initialization is the following:
static struct usba_platform_data usba_pdata = {
...
};
int board_eth_init(bd_t *bis)
{
int rc = 0;
#if defined(CONFIG_USB_ETHER) && defined(CONFIG_USB_GADGET_ATMEL_USBA)
rc = usba_udc_probe(&usba_pdata);
if (!rc)
rc = usb_eth_initialize(bis);
#endif
return rc;
}
If you want to autoboot from tftp you should specify bootcmd environment
variable to something like "tftp uImage; bootm".
And always use usb gadget only with network commands like tftp, dhcp,
ping, etc.
next prev parent reply other threads:[~2011-01-19 9:04 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-11 21:51 [U-Boot] {Spam?} usage of DMA Marcel
2011-01-16 7:56 ` Albert ARIBAUD
2011-01-17 20:48 ` [U-Boot] " Marcel
2011-01-18 13:36 ` Vitaly Kuzmichev
2011-01-18 14:06 ` Vitaly Kuzmichev
2011-01-18 18:12 ` Marcel
2011-01-18 18:11 ` Marcel
2011-01-19 9:04 ` Vitaly Kuzmichev [this message]
2011-01-19 21:33 ` Marcel
2011-01-19 22:44 ` Marcel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D36A911.1070302@mvista.com \
--to=vkuzmichev@mvista.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.