diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2013-03-21 22:51:10 +0100 | 
|---|---|---|
| committer | Linus Walleij <linus.walleij@linaro.org> | 2013-04-08 13:59:25 +0200 | 
| commit | e5a1f68203e4dab8fdbb4c7d20977e6a5dbc7a49 (patch) | |
| tree | b50c3b38ac4a7a0e4a2d1caf0facd2a266d38ace | |
| parent | ab0fc6ce4825311e1842bb3c46611d0f02d189df (diff) | |
| download | olio-linux-3.10-e5a1f68203e4dab8fdbb4c7d20977e6a5dbc7a49.tar.xz olio-linux-3.10-e5a1f68203e4dab8fdbb4c7d20977e6a5dbc7a49.zip | |
staging: ste_rmi4: kill platform_data hack
There is only one instance of the platform data for synaptics_i2c_rmi4
in the mainline kernel, so there is no point of pretending its
variable here. The only member that has a dependency on the platform
is actually the interrupt number, and there is a field in the
i2c_client structure that gets initialized from the board info,
so we can trivially move the board_into into the platform without
knowledge of the platform_data structure.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
| -rw-r--r-- | arch/arm/mach-ux500/board-mop500-u8500uib.c | 7 | ||||
| -rw-r--r-- | drivers/staging/ste_rmi4/Makefile | 1 | ||||
| -rw-r--r-- | drivers/staging/ste_rmi4/board-mop500-u8500uib-rmi4.c | 31 | ||||
| -rw-r--r-- | drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c | 31 | ||||
| -rw-r--r-- | drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h | 1 | 
5 files changed, 23 insertions, 48 deletions
| diff --git a/arch/arm/mach-ux500/board-mop500-u8500uib.c b/arch/arm/mach-ux500/board-mop500-u8500uib.c index ead91c968ff..0b5e14a449d 100644 --- a/arch/arm/mach-ux500/board-mop500-u8500uib.c +++ b/arch/arm/mach-ux500/board-mop500-u8500uib.c @@ -16,8 +16,11 @@  #include "board-mop500.h" -/* Dummy data that can be overridden by staging driver */ -struct i2c_board_info __initdata __weak mop500_i2c3_devices_u8500[] = { +static struct i2c_board_info __initdata mop500_i2c3_devices_u8500[] = { +	{ +		I2C_BOARD_INFO("synaptics_rmi4_i2c", 0x4B), +		.irq = NOMADIK_GPIO_TO_IRQ(84), +	},  };  /* diff --git a/drivers/staging/ste_rmi4/Makefile b/drivers/staging/ste_rmi4/Makefile index e4c03351420..6cce2ed187e 100644 --- a/drivers/staging/ste_rmi4/Makefile +++ b/drivers/staging/ste_rmi4/Makefile @@ -2,4 +2,3 @@  # Makefile for the RMI4 touchscreen driver.  #  obj-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4) += synaptics_i2c_rmi4.o -obj-$(CONFIG_MACH_MOP500) += board-mop500-u8500uib-rmi4.o diff --git a/drivers/staging/ste_rmi4/board-mop500-u8500uib-rmi4.c b/drivers/staging/ste_rmi4/board-mop500-u8500uib-rmi4.c deleted file mode 100644 index 47439c3f725..00000000000 --- a/drivers/staging/ste_rmi4/board-mop500-u8500uib-rmi4.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Some platform data for the RMI4 touchscreen that will override the __weak - * platform data in the Ux500 machine if this driver is activated. - */ -#include <linux/i2c.h> -#include <linux/gpio.h> -#include <linux/interrupt.h> -#include <mach/irqs.h> -#include "synaptics_i2c_rmi4.h" - -/* - * Synaptics RMI4 touchscreen interface on the U8500 UIB - */ - -/* - * Descriptor structure. - * Describes the number of i2c devices on the bus that speak RMI. - */ -static struct synaptics_rmi4_platform_data rmi4_i2c_dev_platformdata = { -	.irq_number     = NOMADIK_GPIO_TO_IRQ(84), -	.irq_type       = (IRQF_TRIGGER_FALLING | IRQF_SHARED), -	.x_flip		= false, -	.y_flip		= true, -}; - -struct i2c_board_info __initdata mop500_i2c3_devices_u8500[] = { -	{ -		I2C_BOARD_INFO("synaptics_rmi4_i2c", 0x4B), -		.platform_data = &rmi4_i2c_dev_platformdata, -	}, -}; diff --git a/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c b/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c index 6a21f67af08..2e3530736bc 100644 --- a/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c +++ b/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c @@ -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, diff --git a/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h b/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h index 384436ef806..8c9166ba71c 100644 --- a/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h +++ b/drivers/staging/ste_rmi4/synaptics_i2c_rmi4.h @@ -38,7 +38,6 @@   * This structure gives platform data for rmi4.   */  struct synaptics_rmi4_platform_data { -	int irq_number;  	int irq_type;  	bool x_flip;  	bool y_flip; |