On Sun, Jun 10, 2012 at 09:42:22PM +0200, Ralph Metzler wrote:
> Dan Carpenter writes:
> > Hello Ralph Metzler,
> >
> > The patch 43dd07f758d8: "[media] DRX-K: Initial check-in" from Jul 3,
> > 2011, leads to the following warning:
> > drivers/media/dvb/frontends/drxk_hard.c:2980 ADCSynchronization()
> > warn: suspicious bitop condition
> >
> > 2977 status = read16(state, IQM_AF_CLKNEG__A, &clkNeg);
> > 2978 if (status < 0)
> > 2979 goto error;
> > 2980 if ((clkNeg | IQM_AF_CLKNEG_CLKNEGDATA__M) ==
> > 2981 IQM_AF_CLKNEG_CLKNEGDATA_CLK_ADC_DATA_POS)
> {
> >
> > IQM_AF_CLKNEG_CLKNEGDATA__M is 2.
> > IQM_AF_CLKNEG_CLKNEGDATA_CLK_ADC_DATA_POS is 0.
> > So this condition can never be true.
>
> It seems this should be & instead of |. The mistake was also present in the
> windows driver.
>
Good deal. Do you want me to send a patch, or are you going to
handle it? Could I get a Reported-by cookie?
>
> >
> > 2982 clkNeg &= (~(IQM_AF_CLKNEG_CLKNEGDATA__M));
> > 2983 clkNeg |=
> > 2984
> IQM_AF_CLKNEG_CLKNEGDATA_CLK_ADC_DATA_NEG;
> > 2985 } else {
> > 2986 clkNeg &= (~(IQM_AF_CLKNEG_CLKNEGDATA__M));
> > 2987 clkNeg |=
> > 2988
> IQM_AF_CLKNEG_CLKNEGDATA_CLK_ADC_DATA_POS;
> >
> > clkNeg |= 0; <-- doesn't make much sense to the unenlightened.
> >
> > 2989 }
>
> This is perfectly normal since those defines were automatically created from
> the
> firmware source code. It is better to leave the code as it is. If there ever
> is a firmware update
> and these bits change their values it will be much harder to adjust the
> driver.
>
Sounds good. When I ran my script against the kernel it turns out
that doing x |= FOO; where foo is zero is very normal.
regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html