summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRanjani Vaidyanathan <ra5478@freescale.com>2010-11-18 13:42:21 -0600
committerRanjani Vaidyanathan <ra5478@freescale.com>2010-12-01 09:21:31 -0600
commitddb57748dab2c770f71b963133e5c79719dc7af4 (patch)
treee2fb1ebff8182b834d92ac3f3bdd71cc02150c12 /arch
parent9c6fdf40cee77b96efd031c850304844a5cf4020 (diff)
ENGR00133828-2: MX50 EVK: Fix FEC GPIO/IOMUX settings in suspend mode.
Fix FEC GPIO/IOMUX settings in suspend to reduce board level power. Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mx5/mx50_rdp.c42
-rw-r--r--arch/arm/mach-mx5/pm.c9
2 files changed, 30 insertions, 21 deletions
diff --git a/arch/arm/mach-mx5/mx50_rdp.c b/arch/arm/mach-mx5/mx50_rdp.c
index 39b36e100a3d..edd4d7256882 100644
--- a/arch/arm/mach-mx5/mx50_rdp.c
+++ b/arch/arm/mach-mx5/mx50_rdp.c
@@ -1232,7 +1232,23 @@ static struct gpmi_nfc_platform_data gpmi_nfc_platform_data = {
.partition_count = 0,
};
-static void mx50_suspend_enter()
+static void fec_gpio_iomux_init()
+{
+ struct pad_desc iomux_setting =
+ MX50_PAD_I2C3_SDA__GPIO_6_23;
+
+ /* Enable the Pull/keeper */
+ iomux_setting.pad_ctrl = 0x8e;
+ mxc_iomux_v3_setup_pad(&iomux_setting);
+ gpio_request(FEC_EN, "fec-en");
+ gpio_direction_output(FEC_EN, 0);
+ gpio_request(FEC_RESET_B, "fec-reset_b");
+ gpio_direction_output(FEC_RESET_B, 0);
+ udelay(500);
+ gpio_set_value(FEC_RESET_B, 1);
+}
+
+static void fec_gpio_iomux_deinit()
{
struct pad_desc iomux_setting =
MX50_PAD_I2C3_SDA__GPIO_6_23;
@@ -1240,24 +1256,26 @@ static void mx50_suspend_enter()
/* Disable the Pull/keeper */
iomux_setting.pad_ctrl = 0xE;
mxc_iomux_v3_setup_pad(&iomux_setting);
+ gpio_request(FEC_EN, "fec-en");
+ gpio_direction_input(FEC_EN);
+ gpio_request(FEC_RESET_B, "fec-reset_b");
+ gpio_direction_input(FEC_RESET_B);
+}
+static void mx50_suspend_enter()
+{
mxc_iomux_v3_setup_multiple_pads(
suspend_enter_pads,
ARRAY_SIZE(suspend_enter_pads));
+ fec_gpio_iomux_deinit();
}
static void mx50_suspend_exit()
{
- struct pad_desc iomux_setting =
- MX50_PAD_I2C3_SDA__GPIO_6_23;
-
mxc_iomux_v3_setup_multiple_pads(
suspend_exit_pads,
ARRAY_SIZE(suspend_exit_pads));
-
- /* Enable the Pull/keeper */
- iomux_setting.pad_ctrl = 0x8e;
- mxc_iomux_v3_setup_pad(&iomux_setting);
+ fec_gpio_iomux_init();
}
static struct mxc_pm_platform_data mx50_pm_data = {
@@ -1338,13 +1356,7 @@ static void __init mx50_rdp_io_init(void)
gpio_request(SGTL_AMP_SHDN, "sgtl5000-amp-shdn");
gpio_direction_output(SGTL_AMP_SHDN, 1);
- gpio_request(FEC_EN, "fec-en");
- gpio_direction_output(FEC_EN, 0);
-
- gpio_request(FEC_RESET_B, "fec-reset_b");
- gpio_direction_output(FEC_RESET_B, 0);
- udelay(500);
- gpio_set_value(FEC_RESET_B, 1);
+ fec_gpio_iomux_init();
/* USB OTG PWR */
gpio_request(USB_OTG_PWR, "usb otg power");
diff --git a/arch/arm/mach-mx5/pm.c b/arch/arm/mach-mx5/pm.c
index 8c964e82260e..6107c3526c16 100644
--- a/arch/arm/mach-mx5/pm.c
+++ b/arch/arm/mach-mx5/pm.c
@@ -22,6 +22,7 @@
#include <linux/cpufreq.h>
#include <linux/iram_alloc.h>
#include <linux/fsl_devices.h>
+#include <asm/mach-types.h>
#include <asm/cacheflush.h>
#include <asm/tlb.h>
#include <asm/mach/map.h>
@@ -61,8 +62,6 @@ void *suspend_iram_base;
void (*suspend_in_iram)(void *sdclk_iomux_addr) = NULL;
void __iomem *suspend_param1;
-#define FEC_EN (5*32 + 23) /*GPIO_6_23*/
-
static int mx5_suspend_enter(suspend_state_t state)
{
if (gpc_dvfs_clk == NULL)
@@ -95,13 +94,11 @@ static int mx5_suspend_enter(suspend_state_t state)
__raw_writel(0, MXC_SRPG_EMPGC0_SRPGCR);
__raw_writel(0, MXC_SRPG_EMPGC1_SRPGCR);
} else {
- /* Setup GPIO/IOMUX settings to lower power. */
- if (pm_data->suspend_enter)
+ if (machine_is_mx50_rdp() && pm_data->suspend_enter)
pm_data->suspend_enter();
/* Suspend now. */
suspend_in_iram(databahn_base);
-
- if (pm_data->suspend_exit)
+ if (machine_is_mx50_rdp() && pm_data->suspend_exit)
pm_data->suspend_exit();
}
} else {