On Wed, Nov 30, 2016 at 02:10:46AM +0000, Bough Chen wrote: > [...] > > > -----Original Message----- > > From: Guy Shapiro [mailto:guy.shapiro@xxxxxxxxxxxxx] > > Sent: Tuesday, November 29, 2016 8:41 PM > > To: dmitry.torokhov@xxxxxxxxx; linux-input@xxxxxxxxxxxxxxx > > Cc: Bough Chen <haibo.chen@xxxxxxx>; Fabio Estevam > > <fabio.estevam@xxxxxxx>; bjorn.forsman@xxxxxxxxx; Guy Shapiro > > <guy.shapiro@xxxxxxxxxxxxx> > > Subject: [PATCH] input: touchscreen: imx6ul_tsc: convert int to u32 > > > > The code uses of_property_read_u32 and expects positive values. > > However, the values are stored in signed int variables. > > Additionally, the registers values are also stored in signed variables without a > > good reason (readl/writel expect u32). > > > > The only time this caused a real bug was in the new average-samples property, > > in which the property is numerically compared and implicitly expected to be > > positive. > > I believe it's better to change all the properties and registers to u32, for > > consistency and warnings reduction. > > > > Signed-off-by: Guy Shapiro <guy.shapiro@xxxxxxxxxxxxx> > > Reported-by: Bjørn Forsman <bjorn.forsman@xxxxxxxxx> > > --- > > drivers/input/touchscreen/imx6ul_tsc.c | 38 +++++++++++++++++-------------- > > --- > > 1 file changed, 19 insertions(+), 19 deletions(-) > > > > diff --git a/drivers/input/touchscreen/imx6ul_tsc.c > > b/drivers/input/touchscreen/imx6ul_tsc.c > > index 31724d9..71ea2d8 100644 > > --- a/drivers/input/touchscreen/imx6ul_tsc.c > > +++ b/drivers/input/touchscreen/imx6ul_tsc.c > > @@ -86,9 +86,9 @@ struct imx6ul_tsc { > > struct clk *adc_clk; > > struct gpio_desc *xnur_gpio; > > > > - int measure_delay_time; > > - int pre_charge_time; > > - int average_samples; > > + u32 measure_delay_time; > > + u32 pre_charge_time; > > + u32 average_samples; > > > > struct completion completion; > > }; > > @@ -99,10 +99,10 @@ struct imx6ul_tsc { > > */ > > static int imx6ul_adc_init(struct imx6ul_tsc *tsc) { > > - int adc_hc = 0; > > - int adc_gc; > > - int adc_gs; > > - int adc_cfg; > > + u32 adc_hc = 0; > > + u32 adc_gc; > > + u32 adc_gs; > > + u32 adc_cfg; > > int timeout; > > Here, *timeout* should be also change to unsigned long. > > > > > reinit_completion(&tsc->completion); > > @@ -155,7 +155,7 @@ static int imx6ul_adc_init(struct imx6ul_tsc *tsc) > > */ > > static void imx6ul_tsc_channel_config(struct imx6ul_tsc *tsc) { > > - int adc_hc0, adc_hc1, adc_hc2, adc_hc3, adc_hc4; > > + u32 adc_hc0, adc_hc1, adc_hc2, adc_hc3, adc_hc4; > > > > adc_hc0 = DISABLE_CONVERSION_INT; > > writel(adc_hc0, tsc->adc_regs + REG_ADC_HC0); @@ -180,8 +180,8 > > @@ static void imx6ul_tsc_channel_config(struct imx6ul_tsc *tsc) > > */ > > static void imx6ul_tsc_set(struct imx6ul_tsc *tsc) { > > - int basic_setting = 0; > > - int start; > > + u32 basic_setting = 0; > > + u32 start; > > > > basic_setting |= tsc->measure_delay_time << 8; > > basic_setting |= DETECT_4_WIRE_MODE | AUTO_MEASURE; @@ - > > 216,8 +216,8 @@ static int imx6ul_tsc_init(struct imx6ul_tsc *tsc) > > > > static void imx6ul_tsc_disable(struct imx6ul_tsc *tsc) { > > - int tsc_flow; > > - int adc_cfg; > > + u32 tsc_flow; > > + u32 adc_cfg; > > > > /* TSC controller enters to idle status */ > > tsc_flow = readl(tsc->tsc_regs + REG_TSC_FLOW_CONTROL); @@ - > > 234,8 +234,8 @@ static void imx6ul_tsc_disable(struct imx6ul_tsc *tsc) static > > bool tsc_wait_detect_mode(struct imx6ul_tsc *tsc) { > > unsigned long timeout = jiffies + msecs_to_jiffies(2); > > - int state_machine; > > - int debug_mode2; > > + u32 state_machine; > > + u32 debug_mode2; > > > > do { > > if (time_after(jiffies, timeout)) > > @@ -253,10 +253,10 @@ static bool tsc_wait_detect_mode(struct imx6ul_tsc > > *tsc) static irqreturn_t tsc_irq_fn(int irq, void *dev_id) { > > struct imx6ul_tsc *tsc = dev_id; > > - int status; > > - int value; > > + u32 status; > > + u32 value; > > int x, y; > > *x,y* also need to change to u32. I made changes recommended by Bough and applied. Thanks. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html