arm: tegra: roth: add tach in p2560 and init GPIO
Shaoming Feng [Tue, 19 Mar 2013 21:16:04 +0000 (14:16 -0700)]
PWM fan on P2560 uses GPIO_PU2. On reworked P2454 it uses
GPIO_PX4, which GPIO is not used for other purpose.

Bug 1247379

Change-Id: Iba12f8c6fb9cb8fc5d23f58abb49a2d0f3ceb4d0
Signed-off-by: Shaoming Feng <shaomingf@nvidia.com>
Reviewed-on: http://git-master/r/210913
Reviewed-by: Matt Wagner <mwagner@nvidia.com>
(cherry picked from commit b1613fd4f85eccbd6c45a1dc89ab96a7b7bd7f1b)
Reviewed-on: http://git-master/r/246417
Reviewed-by: Jun Yan <juyan@nvidia.com>
Tested-by: Jun Yan <juyan@nvidia.com>
Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User

arch/arm/mach-tegra/board-roth-fan.c
arch/arm/mach-tegra/board-roth-pinmux-t11x.h
arch/arm/mach-tegra/board-roth-pinmux.c
include/linux/platform_data/pwm_fan.h

index 8ba5f7e..5ccbdde 100644 (file)
@@ -41,6 +41,7 @@ static struct pwm_fan_platform_data fan_data = {
        .step_time = 100, /*msecs*/
        .pwm_cap = 158,
        .precision_multiplier = 1024,
+       .tach_gpio = TEGRA_GPIO_PX4,
 };
 
 static struct platform_device pwm_fan_therm_cooling_device = {
index 1329ed1..841e91f 100644 (file)
@@ -233,7 +233,7 @@ static __initdata struct tegra_pingroup_config unused_pins_lowpower[] = {
 };
 
 static struct gpio_init_pin_info init_gpio_mode_roth_common[] = {
-       GPIO_INIT_PIN_MODE(TEGRA_GPIO_PX4, false, 0),
+       GPIO_INIT_PIN_MODE(TEGRA_GPIO_PX4, true, 1),
        GPIO_INIT_PIN_MODE(TEGRA_GPIO_PX5, true, 0),
        GPIO_INIT_PIN_MODE(TEGRA_GPIO_PX6, true, 0),
        GPIO_INIT_PIN_MODE(TEGRA_GPIO_PW2, true, 0),
@@ -286,7 +286,7 @@ static struct gpio_init_pin_info init_gpio_mode_roth_common[] = {
        GPIO_INIT_PIN_MODE(TEGRA_GPIO_PEE1, false, 0),
        GPIO_INIT_PIN_MODE(TEGRA_GPIO_PU0, false, 0),
        GPIO_INIT_PIN_MODE(TEGRA_GPIO_PU1, true, 0),
-       GPIO_INIT_PIN_MODE(TEGRA_GPIO_PU2, true, 0),
+       GPIO_INIT_PIN_MODE(TEGRA_GPIO_PU2, true, 1),
        GPIO_INIT_PIN_MODE(TEGRA_GPIO_PU4, false, 0),
        GPIO_INIT_PIN_MODE(TEGRA_GPIO_PU5, true, 0),
        GPIO_INIT_PIN_MODE(TEGRA_GPIO_PU6, true, 0),
index 0e5dbbb..76ee522 100644 (file)
@@ -41,7 +41,7 @@ static __initdata struct tegra_drive_pingroup_config roth_drive_pinmux[] = {
 
 /* Initially setting all used GPIO's to non-TRISTATE */
 static __initdata struct tegra_pingroup_config roth_pinmux_set_nontristate[] = {
-       DEFAULT_PINMUX(GPIO_X4_AUD,     RSVD,   PULL_DOWN,    NORMAL,    OUTPUT),
+       DEFAULT_PINMUX(GPIO_X4_AUD,     RSVD,   PULL_UP,      NORMAL,    INPUT),
        DEFAULT_PINMUX(GPIO_X5_AUD,     RSVD,   PULL_UP,      NORMAL,    INPUT),
        DEFAULT_PINMUX(GPIO_X6_AUD,     RSVD3,  PULL_UP,      NORMAL,    INPUT),
        DEFAULT_PINMUX(GPIO_X7_AUD,     RSVD,   PULL_DOWN,    NORMAL,    OUTPUT),
@@ -101,6 +101,7 @@ static __initdata struct tegra_pingroup_config roth_pinmux_set_nontristate[] = {
        DEFAULT_PINMUX(GPIO_PU4,        PWM1,  NORMAL,      NORMAL,    OUTPUT),
        DEFAULT_PINMUX(GPIO_PU5,        PWM2,  NORMAL,      NORMAL,    INPUT),
        DEFAULT_PINMUX(GPIO_PU6,        PWM3,  NORMAL,      NORMAL,    INPUT),
+       DEFAULT_PINMUX(GPIO_PU2,        RSVD,   PULL_UP,     NORMAL,    INPUT),
 
        DEFAULT_PINMUX(GPIO_PU3,        PWM0,           NORMAL,    NORMAL,     OUTPUT),
        DEFAULT_PINMUX(HDMI_INT,        RSVD,   PULL_DOWN,    NORMAL,    INPUT),
index e1af441..cfca1a0 100644 (file)
@@ -33,5 +33,6 @@ struct pwm_fan_platform_data {
        int step_time;
        int precision_multiplier;
        int state_cap;
+       int tach_gpio;
 };
 #endif