[U-Boot] Query on the ci_udc driver for USB client implementation

Lukasz Majewski l.majewski at samsung.com
Thu Nov 6 10:07:24 CET 2014


Hi Sanchayan,

> 
> 
> On Tuesday 04 November 2014 09:58 PM, Lukasz Majewski wrote:
> > Hi Sanchayan,
> > 
> >> On Tuesday 04 November 2014 10:25 AM, Marek Vasut wrote:
> >>> On Monday, November 03, 2014 at 04:46:48 PM, Fabio Estevam wrote:
> >>>> On Mon, Nov 3, 2014 at 3:33 AM, Sanchayan Maity
> >>>>
> >>>> <maitysanchayan at gmail.com> wrote:
> >>>>> Hello,
> >>>>>
> >>>>> Any pointers?
> >>>>
> >>>> Adding Marek and Stefan on Cc in case they can provide some help.
> >>>>
> >>>> Regards,
> >>>>
> >>>> Fabio Estevam
> >>>>
> >>>>> Thanks & Regards,
> >>>>> Sanchayan Maity.
> >>>>>
> >>>>> On Thursday 30 October 2014 11:14 AM, Sanchayan Maity wrote:
> >>>>>> Hello,
> >>>>>>
> >>>>>> I am currently implementing USB Host and client support for
> >>>>>> Freescale Vybrid platform in u-boot. I managed to get the host
> >>>>>> implementation working.
> >>>>>>
> >>>>>> For the host side, usb start calls usb_init(), which in turns
> >>>>>> call, usb_lowlevel_init(), from there into the ehic_hcd_init()
> >>>>>> of my implementation. So, setting up the necessary clocks and
> >>>>>> plls for USB in my implementation and then setting up the
> >>>>>> usb_ehci, ehci_hccr and echi_hcor structures was all. The flow
> >>>>>> and setup required i was able to trace.
> >>>>>>
> >>>>>> The USB client part is not clear to me. I was thinking i can
> >>>>>> use the ci_udc driver somehow to implement the client part.
> >>>>>> How can i use the ci_udc driver to implement client
> >>>>>> functionality?. From what i could see, the
> >>>>>> usb_gadget_driver_register() is suppose to be the first call.
> >>>>>> But, i couldn't trace from where this gets called or the flow
> >>>>>> and setup is suppose to be. OR Is a separate client driver
> >>>>>> required and nothing generic can be used akin to how it could
> >>>>>> be done for host?
> >>>
> >>> See include/configs/sansa_fuze_plus.h , you need the gadget driver
> >>> for the function you want to implement , in this case it's
> >>> ethernet for example (selected via CONFIG_USB_ETH_CDC ).
> >>>
> >>> An example of DFU/UMS can be found in
> >>> include/configs/exynos4-common.h and to activate those, you need
> >>> to use the 'dfu' or 'ums' commands.
> >>
> >> Thank you Marek. I had enabled usb ether options already and was
> >> trying to test USB client functionality with RNDIS. For some reason
> >> it was not working and i was not able to trace the issue and
> >> subsequently was not sure about the client part. Your inputs
> >> cleared my doubts. I tried UMS and DFU. UMS is working just fine
> >> and i can download the respective images through DFU. Though this
> >> DFU is not working full proof, but, i can figure that out now i
> >> feel. 
> > 
> > I'm very happy that UMS is working seamlessly. What kind of trouble
> > do you have with DFU?
> 
> Hello,
> 
> I have a memory alignment problem with DFU as of now. 
> 
> mtdparts is as below
> device nand0 <fsl_nfc>, # parts = 4
>  #: name                size            offset          mask_flags
>  0: vf-bcb              0x00020000      0x00000000      1
>  1: u-boot              0x00160000      0x00020000      1
>  2: u-boot-env          0x00080000      0x00180000      0
>  3: ubi                 0x3fe00000      0x00200000      0
> 
> active partition: nand0,0 - (vf-bcb) 0x00020000 @ 0x00000000
> 
> defaults:
> mtdids  : nand0=fsl_nfc
> mtdparts:
> mtdparts=fsl_nfc:128k(vf-bcb)ro,1408k(u-boot)ro,512k(u-boot-env),-(ubi)
> 
> As per the above, setenv dfu_alt_info "vf-bcb part 0,1;u-boot part
> 0,2;ubi part 0,4" and CONFIG_SYS_CACHELINE_SIZE is 32.
> 
> I have a ubifs image and i was trying to write it by running "dfu 0
> nand 4" in u-boot and "sudo dfu-util -D ubifs.img -a ubi" on the
> host. I got the error as below.
> 
> "dfu_get_buf: Could not memalign 0x800000 bytes
> 
> Setting CONFIG_SYS_DFU_DATA_BUF_SIZE to (1024*1024) resolved this.
> After this, trying an update as above, did not give me an updated ubi
> (which i check by booting to user space) and doing a nand erase.part
> on ubi partition and then repeating the procedure results in ""Bad
> Linux ARM zImage magic!". After looking a bit online, at the below
> two links
> 
> http://lists.denx.de/pipermail/u-boot/2013-May/155089.html
> http://www.linux-mtd.infradead.org/faq/ubifs.html#L_mkfubifs
> 
> I started trying ubinize. Getting the memory alignment issues again
> now :). I have tried 1, 2, 4 and 8Mb for the dfu data buffer size. So
> i am trying to figure this out at the moment. I am probably missing
> something. :)

On our boards we have eMMC memory, so I'm not so familiar with NAND
DFU problems.

However, I would advise you to pose this question to any of AM335x
boards maintainer (e.g. Tom Rini) since they use NAND on their boards.

> 
> --Best Regards,
> Sanchayan.
> 
> > 
> >>
> >> Thanks again for your inputs. Cheers!
> >>
> >> Best Regards,
> >> Sanchayan.
> >>
> >>>
> >>>>>> Sorry if i am asking this question in the wrong place. I
> >>>>>> couldn't find anyone in the u-boot IRC channel nor find
> >>>>>> something similar to the kernel-newbies mailing list.
> >>>
> >>> There isn't any, so ask away ;-)
> >>>
> >>>>>> Hope i am asking the right questions.
> >>> [...]
> >>>
> >>> Best regards,
> >>> Marek Vasut
> >>>
> > 
> > 
> > 



-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group


More information about the U-Boot mailing list