]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
input: touch: raydium: fix panic when touch panel not attached
authorMark Kuo <mkuo@nvidia.com>
Fri, 21 Dec 2012 11:21:31 +0000 (19:21 +0800)
committerDan Willemsen <dwillemsen@nvidia.com>
Sat, 14 Sep 2013 19:49:04 +0000 (12:49 -0700)
Use rm31080_spi_checking() to check if the hardware is present,
and move the checking to the front of the driver init function
so as to avoid registering suspend/resume function which later
causes kernel panic when system suspends.

bug 1207093

Change-Id: I775e4cae70745ee5ef9ae29888a95b4b770df0db
Signed-off-by: Mark Kuo <mkuo@nvidia.com>
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/187746
(cherry picked from commit 41f0d55dcf8ea7b6dd47b6ea7c19eff319128784)
Reviewed-on: http://git-master/r/189030
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
drivers/input/touchscreen/rm31080a_ts.c

index 6830d1a9f9f5fe4993102ba6ffbd33e9cdbfd13e..03729dda876e0f1a34da54db2ec511e1307137bd 100644 (file)
@@ -1918,6 +1918,13 @@ struct rm31080_ts *rm31080_input_init(struct device *dev, unsigned int irq,
                goto err_out;
        }
 
+       err = rm31080_spi_checking(0);
+       /* succeed return: 1, failed: 0 */
+       if (err == 0) {
+               err = -ENODEV;
+               goto err_out;
+       }
+
        ts = kzalloc(sizeof(*ts), GFP_KERNEL);
 
        input_dev = input_allocate_device();
@@ -2301,8 +2308,6 @@ static int rm31080_spi_probe(struct spi_device *spi)
 
        rm31080_init_ts_structure_part();
 
-       if (!rm31080_spi_checking(0))
-               goto err_unregister_notifier;
 
        if (misc_register(&raydium_ts_miscdev) != 0) {
                dev_err(&spi->dev, "Raydium TS: cannot register miscdev\n");