Hi Wolfgang,

On Wednesday 15 July 2009 17:08, Wolfgang Denk wrote:
> Dear Matthias Fuchs,
> 
> In message <200907151251.25985.matthias.fu...@esd.eu> you wrote:
> > Signed-off-by: Matthias Fuchs <matthias.fu...@esd.eu>
> > ---
> ...
> > diff --git a/board/esd/pmc405de/pmc405de.c b/board/esd/pmc405de/pmc405de.c
> > new file mode 100644
> > index 0000000..ca26d5c
> > --- /dev/null
> > +++ b/board/esd/pmc405de/pmc405de.c
> ...
> > +   if ((pllmr0 & PLLMR0_CPU_TO_PLB_MASK) == PLLMR0_CPU_PLB_DIV_3) {
> > +           /* fCPU=333MHz, fPLB=111MHz */
> > +           if (pci_is_66mhz()) {
> > +                   if ((pllmr0 & PLLMR0_PCI_TO_PLB_MASK) !=
> > +                       PLLMR0_PCI_PLB_DIV_1) {
> > +                           pll_write((pllmr0 & ~PLLMR0_PCI_TO_PLB_MASK) |
> > +                                     PLLMR0_PCI_PLB_DIV_1, pllmr1);
> > +                   }
> > +           } else {
> > +                   if ((pllmr0 & PLLMR0_PCI_TO_PLB_MASK) !=
> > +                       PLLMR0_PCI_PLB_DIV_2) {
> > +                           pll_write((pllmr0 & ~PLLMR0_PCI_TO_PLB_MASK) |
> > +                                     PLLMR0_PCI_PLB_DIV_2, pllmr1);
> > +                   }
> > +           }
> > +   } else {
> > +           /* fCPU=133|266MHz, fPLB=133MHz */
> > +           if (pci_is_66mhz()) {
> > +                   if ((pllmr0 & PLLMR0_PCI_TO_PLB_MASK) !=
> > +                       PLLMR0_PCI_PLB_DIV_2) {
> > +                           pll_write((pllmr0 & ~PLLMR0_PCI_TO_PLB_MASK) |
> > +                                     PLLMR0_PCI_PLB_DIV_2, pllmr1);
> > +                   }
> > +           } else {
> > +                   if ((pllmr0 & PLLMR0_PCI_TO_PLB_MASK) !=
> > +                       PLLMR0_PCI_PLB_DIV_3) {
> > +                           pll_write((pllmr0 & ~PLLMR0_PCI_TO_PLB_MASK) |
> > +                                     PLLMR0_PCI_PLB_DIV_3, pllmr1);
> > +                   }
> > +           }
> > +   }
> 
> Please try to factor out repeated code like here.
Ack.
> > +static int is_monarch(void)
> > +{
> > +   if (in_be32((void*)GPIO0_IR) & CONFIG_SYS_GPIO_MONARCH_N)
> > +           return 0;
> > +   return 1;
> 
> or:
>       return (in_be32((void*)GPIO0_IR) & CONFIG_SYS_GPIO_MONARCH_N) == 0;
Ack.
> 
> Umm... and why do we need a cast here? This should be fixed.
The in/out_be16/32 functions expect a pointer. When you grep over the
U-Boot sources you will find tons of places with this cast.
So I will and cannot fix this with my patch.

We could put the cast into the GPIO_IR (and friends) definitions.
Do you want me to remove the cast and life with a compiler warning until
this has been globally fixed?

Because this is not a particular problem with this patch it should be
addressed in a separate discussion. But you are rigth - this cast is
a little bit nerving :-)

> 
> > +}
> > +
> > +static int pci_is_66mhz(void)
> > +{
> > +   if (in_be32((void*)GPIO0_IR) & CONFIG_SYS_GPIO_M66EN)
> > +           return 1;
> > +   return 0;
> 
> Ditto.
> 
> > +}
> > +
> > +static int board_revision(void)
> > +{
> > +   return ((in_be32((void*)GPIO0_IR) & CONFIG_SYS_GPIO_HWREV_MASK) >>
> > +           CONFIG_SYS_GPIO_HWREV_SHIFT);
> > +}
> 
> and again.
> 
> > +static int cpld_revision(void)
> > +{
> > +   return ((in_8((void*)CPLD_VERSION) & CPLD_VERSION_MASK));
> > +}
> 
> and again.
> 
> Best regards,
> 
> Wolfgang Denk
> 
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to