Re: [PATCH 2/5 v2] Input: bu21013_ts - Move GPIO init and exit functions into the driver
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2012-11-26 16:46:26
Also in:
lkml
Hi Lee, On Mon, Nov 26, 2012 at 12:01:43PM +0000, Lee Jones wrote:
/**
+ * bu21013_gpio_board_init() - configures the touch panel
+ * @reset_pin: reset pin number
+ *
+ * This function is used to configure the voltage and
+ * reset the touch panel controller.
+ */
+static int bu21013_gpio_board_init(int reset_pin)
+{
+ int retval = 0;
+
+ retval = gpio_request_one(reset_pin, GPIOF_INIT_HIGH, "touchp_reset");Also need to specify dircetion (even though it defaults to output).
+ if (retval) {
+ printk(KERN_ERR "Unable to request gpio reset_pin");
+ return retval;
+ }
+
+ return retval;
+}
+
+/**
+ * bu21013_gpio_board_exit() - deconfigures the touch panel controller
+ * @reset_pin: reset pin number
+ *
+ * This function is used to deconfigure the chip selection
+ * for touch panel controller.
+ */
+static int bu21013_gpio_board_exit(int reset_pin)
+{
+ int retval = 0;
+
+ retval = gpio_direction_output(reset_pin, 0);
+ if (retval < 0) {
+ printk(KERN_ERR "%s: gpio direction failed\n",
+ __func__);
+ return retval;You should not return here, as gpio has to be freed even if you unable to toggle it.
quoted hunk ↗ jump to hunk
+ } + gpio_set_value(reset_pin, 0); + gpio_free(reset_pin); + + return retval; +} + +/** * bu21013_init_chip() - power on sequence for the bu21013 controller * @data: device structure pointer *@@ -449,6 +493,8 @@ static int __devinit bu21013_probe(struct i2c_client *client, return -EINVAL; } + pdata->irq = gpio_to_irq(pdata->touch_pin); +
No, you still can not do it since pdata is a const pointer. Does not your compiler throw a warning here? I already sent you a version of the patch that does not have these issues, is there a particular reason why you needed to roll your own instead of simply trying out the one I sent? Thanks. -- Dmitry