On 05/22/2013 10:25 PM, Dan Carpenter wrote:
Hello Michael Hennerich, The patch e31166f0fd48: "iio: frequency: New driver for Analog Devices ADF4350/ADF4351 Wideband Synthesizers" from May 29, 2012, leads to the following warning: "drivers/iio/frequency/adf4350.c:212 adf4350_set_freq() warn: 0x13c001fc0 is larger than 32 bits" I have been messing with Smatch recently and this is not the right warning... :/ drivers/iio/frequency/adf4350.c 207 st->regs[ADF4350_REG2] = 208 ADF4350_REG2_10BIT_R_CNT(r_cnt) | 209 ADF4350_REG2_DOUBLE_BUFF_EN | 210 (pdata->ref_doubler_en ? ADF4350_REG2_RMULT2_EN : 0) | 211 (pdata->ref_div2_en ? ADF4350_REG2_RDIV2_EN : 0) | 212 (pdata->r2_user_settings & (ADF4350_REG2_PD_POLARITY_POS | 213 ADF4350_REG2_LDP_6ns | ADF4350_REG2_LDF_INT_N | 214 ADF4350_REG2_CHARGE_PUMP_CURR_uA(5000) | 215 ADF4350_REG2_MUXOUT(0x7) | ADF4350_REG2_NOISE_MODE(0x9))); ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 0x7 and 0x9 are signed int so when we do "<< 29" it wraps or has a sign extention. Also we are doing a bitwise AND with 32 bit unsigned values so they get truncated that way too. It's not clear what was intended here. regards, dan carpenter
Hi Dan, Thanks for the reminder. We actually fixed the typo in the mask some time ago, 0x9 should be 0x3, we send a patch shortly. 7 or 3 being signed by default shouldn't matter. The whole term at the end is just a big mask used to reject some bits being set in r2_user_settings. -- Greetings, Michael -- Analog Devices GmbH Wilhelm-Wagenfeld-Str. 6 80807 Muenchen Sitz der Gesellschaft: Muenchen; Registergericht: Muenchen HRB 40368; Geschaeftsfuehrer:Dr.Carsten Suckrow, Thomas Wessel, William A. Martin, Margaret Seif -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html