[U-Boot] [PATCH 11/14] usb: UniPhier: add UniPhier on-chip xHCI host driver support

Masahiro Yamada yamada.m at jp.panasonic.com
Tue Feb 24 05:54:26 CET 2015


Hi Simon,


On Fri, 20 Feb 2015 10:21:27 -0700
Simon Glass <sjg at chromium.org> wrote:

> Hi Masahiro,
> 
> On 20 February 2015 at 05:12, Masahiro Yamada <yamada.m at jp.panasonic.com> wrote:
> > Hi Simon,
> >
> >
> >
> > On Tue, 17 Feb 2015 22:01:53 -0700
> > Simon Glass <sjg at chromium.org> wrote:
> >
> >> > +#include <common.h>
> >> > +#include <linux/err.h>
> >> > +#include <usb.h>
> >> > +#include <fdtdec.h>
> >> > +#include "xhci.h"
> >> > +
> >> > +DECLARE_GLOBAL_DATA_PTR;
> >> > +
> >> > +#define FDT            gd->fdt_blob
> >>
> >> Ick, please don't do this. Just use a local variable if you like.
> >>
> >> > +#define COMPAT         "panasonic,uniphier-xhci"
> >>
> >> This too.
> >
> > Why?
> > Each of them appears twice in the code.
> 
> In the first case you could just a local variable as is done elsewhere
> in the code:
> 
> const void *blob = gd->fdt_blob;
> 
> Then use 'blob'.

Sounds reasonable.


> In the second case, you could easily restructure your loop to remove
> the duplication. But really you should use the alias function in
> fdtdec until you convert to driver model.
> 
> >
> > Also, if I directly write the strings here, the line exceeds 80 columns
> > and the code gets unreadable for line-wrapping.
> >
> >
> > Anyway, this is not a big deal.
> > You have already posted DM USB patch series.
> > Once it is merged into the mainline, I will not have to scan a device tree
> > in my own driver.
> 
> Even now you don't need to do that, as above.

OK.

I am still not convinced with one thing of the fdtdec_find_aliases_for_id().

I think it could take the compatibility string directly like this:

   node_offset =  fdtdec_find_aliases_for_id(gd->fdt_blob, "usb", "panasonic,uniphier-xhci", index);


Anyway, that is OK if it is temporal.

I used this helper function in v4.
http://patchwork.ozlabs.org/patch/442791/

I hope DM USB is supported in the mainline soon.



> >
> >
> >> > +
> >> > +static int get_uniphier_xhci_base(int index, struct xhci_hccr **base)
> >> > +{
> >> > +       int offset;
> >> > +
> >> > +       for (offset = fdt_node_offset_by_compatible(FDT, 0, COMPAT);
> >> > +            offset >= 0;
> >> > +            offset = fdt_node_offset_by_compatible(FDT, offset, COMPAT)) {
> >> > +               if (index == 0) {
> >> > +                       *base = (struct xhci_hccr *)
> >> > +                                       fdtdec_get_addr(FDT, offset, "reg");
> >> > +                       return 0;
> >> > +               }
> >> > +               index--;
> >> > +       }
> >>
> >> How about this"
> >>
> >> count = fdtdec_find_aliasses_for_id(gd->fdt_blob, "usb",
> >> COMPAT_PANASONIC_XHCI, node_list, 4);
> >> if (index >= count)
> >>    return -ENOENT;
> >> offset = node_list[index];
> >>
> >> then aliases will work. You need to ad the COMPAT to
> >> include/fdtdec.h/c.  See ehci-tegra.c for an example.
> >
> >
> > I do not like this idea.
> >
> >
> > fdt_compat_id is one of what I think should be removed asap because:
> >
> >   - The two separete tables,  enum fdt_compat_id  and compat_names[],
> >     must be maintained in sync.  If someone modifies just one of them,
> >     it gets broken.  Anybody who checks those two tables are arranged
> >      in the same order?
> >
> >   - It seems ridiculous to collect many devices from various platforms
> >      into the common place.
> >     If everyone starts to follow this way, the table grows too big soon.
> 
> The purpose is that we then know which drivers are directly looking at
> the device tree. As we add driver model support, we remove these
> strings. When the table is empty, we can remove all that support from
> fdtdec, including aliases.
> 

OK.  If you assume this tabile is like a TODO list, it makes sense.




> >
> > Moreover, I am not happy about adding aliases to my device tree again.
> >
> > Rather, I am searching for an idea to avoid adding an alias to every device, like this.
> > http://patchwork.ozlabs.org/patch/441922/
> 
> This is up to you.
> 
> Bu why? It allows people to make adjustments if needed. The numbering
> of devices is an important thing in U-Boot - most commands use this
> although I would like one day to allow devices to be named (just use
> dev->name with device tree).
> 
> Anyway this is up to you.

I read your explanation and I am convinced.

Let's do not apply this series.



Best Regards
Masahiro Yamada



More information about the U-Boot mailing list