]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Input: imx6ul_tsc - convert int to u32
authorGuy Shapiro <guy.shapiro@mobi-wize.com>
Wed, 30 Nov 2016 18:25:11 +0000 (10:25 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 1 Dec 2016 01:44:36 +0000 (17:44 -0800)
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@mobi-wize.com>
Reported-by: Bjørn Forsman <bjorn.forsman@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/imx6ul_tsc.c

index 5babefef99a1eb7179a0330231748bac3572251d..d2a39120f37f154a5bf3eb59e98c2efb704ea9e2 100644 (file)
@@ -91,9 +91,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;
 };
@@ -104,11 +104,11 @@ 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;
-       int timeout;
+       u32 adc_hc = 0;
+       u32 adc_gc;
+       u32 adc_gs;
+       u32 adc_cfg;
+       unsigned long timeout;
 
        reinit_completion(&tsc->completion);
 
@@ -164,7 +164,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);
@@ -189,8 +189,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;
@@ -225,8 +225,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);
@@ -243,8 +243,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))
@@ -262,10 +262,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;
-       int x, y;
-       int start;
+       u32 status;
+       u32 value;
+       u32 x, y;
+       u32 start;
 
        status = readl(tsc->tsc_regs + REG_TSC_INT_STATUS);
 
@@ -305,8 +305,8 @@ static irqreturn_t tsc_irq_fn(int irq, void *dev_id)
 static irqreturn_t adc_irq_fn(int irq, void *dev_id)
 {
        struct imx6ul_tsc *tsc = dev_id;
-       int coco;
-       int value;
+       u32 coco;
+       u32 value;
 
        coco = readl(tsc->adc_regs + REG_ADC_HS);
        if (coco & 0x01) {