2011-03-04 22:52:14

by Dudley Du

[permalink] [raw]
Subject: CHROMIUM: arm: tegra: Add platfrom devices for Cypress trackpad (issue6623011)

Reviewers: ccross_android.com, konkers_android.com, olof_lixom.net,
linux_arm.linux.org.uk, linux-tegra_vger.kernel.org,
linux-arm-kernel_lists.infradead.org, linux-kernel_vger.kernel.org, Micah
C, dudl,

Description:
CHROMIUM: arm: tegra: Add platfrom devices for Cypress trackpad

1. Add platfrom data strcuture cyapa_platfrom_data.
2. Add trackpad device into platfrom I2C bus 0.
3. Initialize platfrom data for cyapa_platfrom_data.
4. This code is merged based kernel version 2.7.37-rc5.


Change-Id: I3591317ac9c3b7d5328a9c617d662ad6be6065a2
Signed-off-by: Du, Dudley <[email protected]>

BUG=None
TEST=Test on arm tegra2 seaborad and kaen platform

Please review this at http://codereview.chromium.org/6623011/

SVN Base: http://git.chromium.org/git/[email protected]

Affected files:
M arch/arm/mach-tegra/board-seaboard.h
M arch/arm/mach-tegra/board-seaboard.c


Index: arch/arm/mach-tegra/board-seaboard.c
diff --git a/arch/arm/mach-tegra/board-seaboard.c
b/arch/arm/mach-tegra/board-seaboard.c
index
75fbab68ef61c0c117bb8dafa2aaca90947a860b..de272cc73794c6600994af3c0e834dd884f6b56b
100644
--- a/arch/arm/mach-tegra/board-seaboard.c
+++ b/arch/arm/mach-tegra/board-seaboard.c
@@ -303,6 +303,36 @@ static struct tegra_i2c_platform_data
seaboard_dvc_platform_data = {
.is_dvc = true,
};

+/* for Cypress Trackpad. */
+#include <linux/cyapa.h>
+
+static int cyapa_i2c_platform_init(void)
+{
+ return 0;
+}
+
+static int cyapa_i2c_platform_wakeup(void)
+{
+ return 0;
+}
+
+static struct cyapa_platform_data cyapa_i2c_platform_data = {
+ .flag = 0,
+ .gen = CYAPA_GEN2,
+ .power_state = CYAPA_PWR_ACTIVE,
+ .use_absolute_mode = false,
+ .use_polling_mode = false,
+ .polling_interval_time_active = CYAPA_ACTIVE_POLLING_INTVAL_TIME,
+ .polling_interval_time_lowpower = CYAPA_LOWPOWER_POLLING_INTVAL_TIME,
+ .active_touch_timeout = CYAPA_ACTIVE_TOUCH_TIMEOUT,
+ .name = CYAPA_I2C_NAME,
+ .irq_gpio = TEGRA_GPIO_CYTP_INT,
+ .report_rate = CYAPA_REPORT_RATE,
+
+ .wakeup = cyapa_i2c_platform_wakeup,
+ .init = cyapa_i2c_platform_init,
+};
+
static struct i2c_board_info __initdata seaboard_i2c0_devices[] = {
{
I2C_BOARD_INFO("wm8903", 0x1a),
@@ -311,6 +341,11 @@ static struct i2c_board_info __initdata
seaboard_i2c0_devices[] = {
I2C_BOARD_INFO("isl29018", 0x44),
.irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_ISL29018_IRQ),
},
+ {
+ I2C_BOARD_INFO(CYAPA_I2C_NAME, 0x67),
+ .irq = TEGRA_GPIO_TO_IRQ(TEGRA_GPIO_CYTP_INT),
+ .platform_data = &cyapa_i2c_platform_data,
+ },
};

static struct i2c_board_info __initdata seaboard_i2c4_devices[] = {
@@ -549,6 +584,11 @@ static void __init tegra_seaboard_init(void)

tegra_gpio_enable(TEGRA_GPIO_LIDSWITCH);
tegra_gpio_enable(TEGRA_GPIO_POWERKEY);
+
+ /* for Cypress trackpad. */
+ tegra_gpio_enable(TEGRA_GPIO_CYTP_INT);
+ gpio_request(TEGRA_GPIO_CYTP_INT, "gpio_cytp_int");
+ gpio_direction_input(TEGRA_GPIO_CYTP_INT);
}

MACHINE_START(SEABOARD, "seaboard")
Index: arch/arm/mach-tegra/board-seaboard.h
diff --git a/arch/arm/mach-tegra/board-seaboard.h
b/arch/arm/mach-tegra/board-seaboard.h
index
5e1fc48bfa940056f2fd8e4c3bee5124d1398da4..4a38c4163ac338e90433a95afb90ec57a456ed1b
100644
--- a/arch/arm/mach-tegra/board-seaboard.h
+++ b/arch/arm/mach-tegra/board-seaboard.h
@@ -28,6 +28,9 @@
#define TEGRA_GPIO_ISL29018_IRQ TEGRA_GPIO_PZ2
#define TEGRA_GPIO_AC_ONLINE TEGRA_GPIO_PV3

+/* for Cypress Trackpad gpio interrupt. */
+#define TEGRA_GPIO_CYTP_INT TEGRA_GPIO_PW2
+
void seaboard_pinmux_init(void);
int seaboard_panel_init(void);
int seaboard_sdhci_init(void);


2011-03-04 11:49:48

by Ben Dooks

[permalink] [raw]
Subject: Re: CHROMIUM: arm: tegra: Add platfrom devices for Cypress trackpad (issue6623011)

On Fri, Mar 04, 2011 at 11:42:54AM +0000, [email protected] wrote:
> Reviewers: ccross_android.com, konkers_android.com, olof_lixom.net,
> linux_arm.linux.org.uk, linux-tegra_vger.kernel.org,
> linux-arm-kernel_lists.infradead.org, linux-kernel_vger.kernel.org, Micah
> C, dudl,
>
> Description:
> CHROMIUM: arm: tegra: Add platfrom devices for Cypress trackpad
>
> 1. Add platfrom data strcuture cyapa_platfrom_data.
> 2. Add trackpad device into platfrom I2C bus 0.
> 3. Initialize platfrom data for cyapa_platfrom_data.
> 4. This code is merged based kernel version 2.7.37-rc5.
>
>
> Change-Id: I3591317ac9c3b7d5328a9c617d662ad6be6065a2
> Signed-off-by: Du, Dudley <[email protected]>
>
> BUG=None
> TEST=Test on arm tegra2 seaborad and kaen platform
>
> Please review this at http://codereview.chromium.org/6623011/
>
> SVN Base: http://git.chromium.org/git/[email protected]
>
> Affected files:
> M arch/arm/mach-tegra/board-seaboard.h
> M arch/arm/mach-tegra/board-seaboard.c
>
>
> Index: arch/arm/mach-tegra/board-seaboard.c
> diff --git a/arch/arm/mach-tegra/board-seaboard.c
> b/arch/arm/mach-tegra/board-seaboard.c
> index
> 75fbab68ef61c0c117bb8dafa2aaca90947a860b..de272cc73794c6600994af3c0e834dd884f6b56b
> 100644
> --- a/arch/arm/mach-tegra/board-seaboard.c
> +++ b/arch/arm/mach-tegra/board-seaboard.c
> @@ -303,6 +303,36 @@ static struct tegra_i2c_platform_data
> seaboard_dvc_platform_data = {
> .is_dvc = true,
> };
>
> +/* for Cypress Trackpad. */
> +#include <linux/cyapa.h>
> +
> +static int cyapa_i2c_platform_init(void)
> +{
> + return 0;
> +}
> +
> +static int cyapa_i2c_platform_wakeup(void)
> +{
> + return 0;
> +}
> +
> +static struct cyapa_platform_data cyapa_i2c_platform_data = {
> + .flag = 0,
> + .gen = CYAPA_GEN2,
> + .power_state = CYAPA_PWR_ACTIVE,
> + .use_absolute_mode = false,
> + .use_polling_mode = false,
> + .polling_interval_time_active = CYAPA_ACTIVE_POLLING_INTVAL_TIME,
> + .polling_interval_time_lowpower = CYAPA_LOWPOWER_POLLING_INTVAL_TIME,
> + .active_touch_timeout = CYAPA_ACTIVE_TOUCH_TIMEOUT,
> + .name = CYAPA_I2C_NAME,
> + .irq_gpio = TEGRA_GPIO_CYTP_INT,
> + .report_rate = CYAPA_REPORT_RATE,
> +
> + .wakeup = cyapa_i2c_platform_wakeup,
> + .init = cyapa_i2c_platform_init,

if these aren't needed, then why not get the driver to check for NULL
and not call them?

--
Ben Dooks, [email protected], http://www.fluff.org/ben/

Large Hadron Colada: A large Pina Colada that makes the universe disappear.

2011-03-04 12:01:23

by Dudley Du

[permalink] [raw]
Subject: RE: CHROMIUM: arm: tegra: Add platfrom devices for Cypress trackpad (issue6623011)

Hi Ben,

Thanks for your question.

Yes, If sure that these aren't needed, they can remove them.
And the driver already has code to check for NULL and not call them.

Thanks.

Best Wishes,
Dudley Du
86-21-61648950


-----Original Message-----
From: Ben Dooks [mailto:[email protected]]
Sent: Friday, March 04, 2011 7:50 PM
To: Dudley Du; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Subject: Re: CHROMIUM: arm: tegra: Add platfrom devices for Cypress trackpad (issue6623011)

On Fri, Mar 04, 2011 at 11:42:54AM +0000, [email protected] wrote:
> Reviewers: ccross_android.com, konkers_android.com, olof_lixom.net,
> linux_arm.linux.org.uk, linux-tegra_vger.kernel.org,
> linux-arm-kernel_lists.infradead.org, linux-kernel_vger.kernel.org, Micah
> C, dudl,
>
> Description:
> CHROMIUM: arm: tegra: Add platfrom devices for Cypress trackpad
>
> 1. Add platfrom data strcuture cyapa_platfrom_data.
> 2. Add trackpad device into platfrom I2C bus 0.
> 3. Initialize platfrom data for cyapa_platfrom_data.
> 4. This code is merged based kernel version 2.7.37-rc5.
>
>
> Change-Id: I3591317ac9c3b7d5328a9c617d662ad6be6065a2
> Signed-off-by: Du, Dudley <[email protected]>
>
> BUG=None
> TEST=Test on arm tegra2 seaborad and kaen platform
>
> Please review this at http://codereview.chromium.org/6623011/
>
> SVN Base: http://git.chromium.org/git/[email protected]
>
> Affected files:
> M arch/arm/mach-tegra/board-seaboard.h
> M arch/arm/mach-tegra/board-seaboard.c
>
>
> Index: arch/arm/mach-tegra/board-seaboard.c
> diff --git a/arch/arm/mach-tegra/board-seaboard.c
> b/arch/arm/mach-tegra/board-seaboard.c
> index
> 75fbab68ef61c0c117bb8dafa2aaca90947a860b..de272cc73794c6600994af3c0e834dd884f6b56b
> 100644
> --- a/arch/arm/mach-tegra/board-seaboard.c
> +++ b/arch/arm/mach-tegra/board-seaboard.c
> @@ -303,6 +303,36 @@ static struct tegra_i2c_platform_data
> seaboard_dvc_platform_data = {
> .is_dvc = true,
> };
>
> +/* for Cypress Trackpad. */
> +#include <linux/cyapa.h>
> +
> +static int cyapa_i2c_platform_init(void)
> +{
> + return 0;
> +}
> +
> +static int cyapa_i2c_platform_wakeup(void)
> +{
> + return 0;
> +}
> +
> +static struct cyapa_platform_data cyapa_i2c_platform_data = {
> + .flag = 0,
> + .gen = CYAPA_GEN2,
> + .power_state = CYAPA_PWR_ACTIVE,
> + .use_absolute_mode = false,
> + .use_polling_mode = false,
> + .polling_interval_time_active = CYAPA_ACTIVE_POLLING_INTVAL_TIME,
> + .polling_interval_time_lowpower = CYAPA_LOWPOWER_POLLING_INTVAL_TIME,
> + .active_touch_timeout = CYAPA_ACTIVE_TOUCH_TIMEOUT,
> + .name = CYAPA_I2C_NAME,
> + .irq_gpio = TEGRA_GPIO_CYTP_INT,
> + .report_rate = CYAPA_REPORT_RATE,
> +
> + .wakeup = cyapa_i2c_platform_wakeup,
> + .init = cyapa_i2c_platform_init,

if these aren't needed, then why not get the driver to check for NULL
and not call them?

--
Ben Dooks, [email protected], http://www.fluff.org/ben/

Large Hadron Colada: A large Pina Colada that makes the universe disappear.

????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?