On Thu, Oct 18, 2012 at 4:04 AM, Marek Vasut <ma...@denx.de> wrote: > Dear Liu Shengzhou-B36685,
>> > > > >> > > > > +/* Check USB PHY clock valid */ >> > > > > +static int usb_phy_clk_valid(struct usb_ehci *ehci) { >> > > > > + if ((!(in_be32(&ehci->control) & PHY_CLK_VALID)) && >> > > > > + (!in_be32(&ehci->prictrl))) { >> > > > >> > > > (!A && !B) condition can certainly be done without the double >> > > > negation ;-) >> > > >> > > [Shengzhou] Yes, using !(A||B) is also okay:) >> > >> > Good, you did your logic homework well. Now go one step further: >> > >> > if (a || b) >> > >> > return 1; >> >> [Shengzhou] No, this doesn't work, b is 0 at initial time, but b is 1 at >> the second time, a is depend on the register PHY_CLK_VALID bit, We just >> want to check it at the first time and then think it is always valid after >> that, it's using a trick:) > > Good point, I was just testing you of course ;-) I may just be dim. Why is this a good point? If in_be32(&ehci->prictrl) is non-zero, then this function will return '1'. If (in_be32(&ehci->control) & PHY_CLK_VALID) is non-zero, this function will return 1. What am I missing? Andy _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot