|
@@ -864,6 +864,16 @@ static int synaptics_rmi4_i2c_query_device(struct synaptics_rmi4_data *pdata)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Descriptor structure.
|
|
|
+ * Describes the number of i2c devices on the bus that speak RMI.
|
|
|
+ */
|
|
|
+static struct synaptics_rmi4_platform_data synaptics_rmi4_platformdata = {
|
|
|
+ .irq_type = (IRQF_TRIGGER_FALLING | IRQF_SHARED),
|
|
|
+ .x_flip = false,
|
|
|
+ .y_flip = true,
|
|
|
+};
|
|
|
+
|
|
|
/**
|
|
|
* synaptics_rmi4_probe() - Initialze the i2c-client touchscreen driver
|
|
|
* @i2c: i2c client structure pointer
|
|
@@ -890,10 +900,8 @@ static int synaptics_rmi4_probe
|
|
|
return -EIO;
|
|
|
}
|
|
|
|
|
|
- if (!platformdata) {
|
|
|
- dev_err(&client->dev, "%s: no platform data\n", __func__);
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
+ if (!platformdata)
|
|
|
+ platformdata = &synaptics_rmi4_platformdata;
|
|
|
|
|
|
/* Allocate and initialize the instance data for this client */
|
|
|
rmi4_data = kcalloc(2, sizeof(struct synaptics_rmi4_data),
|
|
@@ -977,13 +985,13 @@ static int synaptics_rmi4_probe
|
|
|
synaptics_rmi4_i2c_block_read(rmi4_data,
|
|
|
rmi4_data->fn01_data_base_addr + 1, intr_status,
|
|
|
rmi4_data->number_of_interrupt_register);
|
|
|
- retval = request_threaded_irq(platformdata->irq_number, NULL,
|
|
|
+ retval = request_threaded_irq(client->irq, NULL,
|
|
|
synaptics_rmi4_irq,
|
|
|
platformdata->irq_type,
|
|
|
DRIVER_NAME, rmi4_data);
|
|
|
if (retval) {
|
|
|
dev_err(&client->dev, "%s:Unable to get attn irq %d\n",
|
|
|
- __func__, platformdata->irq_number);
|
|
|
+ __func__, client->irq);
|
|
|
goto err_query_dev;
|
|
|
}
|
|
|
|
|
@@ -996,7 +1004,7 @@ static int synaptics_rmi4_probe
|
|
|
return retval;
|
|
|
|
|
|
err_free_irq:
|
|
|
- free_irq(platformdata->irq_number, rmi4_data);
|
|
|
+ free_irq(client->irq, rmi4_data);
|
|
|
err_query_dev:
|
|
|
regulator_disable(rmi4_data->regulator);
|
|
|
err_regulator_enable:
|
|
@@ -1019,11 +1027,10 @@ err_input:
|
|
|
static int synaptics_rmi4_remove(struct i2c_client *client)
|
|
|
{
|
|
|
struct synaptics_rmi4_data *rmi4_data = i2c_get_clientdata(client);
|
|
|
- const struct synaptics_rmi4_platform_data *pdata = rmi4_data->board;
|
|
|
|
|
|
rmi4_data->touch_stopped = true;
|
|
|
wake_up(&rmi4_data->wait);
|
|
|
- free_irq(pdata->irq_number, rmi4_data);
|
|
|
+ free_irq(client->irq, rmi4_data);
|
|
|
input_unregister_device(rmi4_data->input_dev);
|
|
|
regulator_disable(rmi4_data->regulator);
|
|
|
regulator_put(rmi4_data->regulator);
|
|
@@ -1046,10 +1053,9 @@ static int synaptics_rmi4_suspend(struct device *dev)
|
|
|
int retval;
|
|
|
unsigned char intr_status;
|
|
|
struct synaptics_rmi4_data *rmi4_data = dev_get_drvdata(dev);
|
|
|
- const struct synaptics_rmi4_platform_data *pdata = rmi4_data->board;
|
|
|
|
|
|
rmi4_data->touch_stopped = true;
|
|
|
- disable_irq(pdata->irq_number);
|
|
|
+ disable_irq(rmi4_data->i2c_client->irq);
|
|
|
|
|
|
retval = synaptics_rmi4_i2c_block_read(rmi4_data,
|
|
|
rmi4_data->fn01_data_base_addr + 1,
|
|
@@ -1080,11 +1086,10 @@ static int synaptics_rmi4_resume(struct device *dev)
|
|
|
int retval;
|
|
|
unsigned char intr_status;
|
|
|
struct synaptics_rmi4_data *rmi4_data = dev_get_drvdata(dev);
|
|
|
- const struct synaptics_rmi4_platform_data *pdata = rmi4_data->board;
|
|
|
|
|
|
regulator_enable(rmi4_data->regulator);
|
|
|
|
|
|
- enable_irq(pdata->irq_number);
|
|
|
+ enable_irq(rmi4_data->i2c_client->irq);
|
|
|
rmi4_data->touch_stopped = false;
|
|
|
|
|
|
retval = synaptics_rmi4_i2c_block_read(rmi4_data,
|