From patchwork Thu Mar 28 09:34:36 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Ujfalusi X-Patchwork-Id: 2355661 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id D34A9DF2A1 for ; Thu, 28 Mar 2013 09:34:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756055Ab3C1Jek (ORCPT ); Thu, 28 Mar 2013 05:34:40 -0400 Received: from arroyo.ext.ti.com ([192.94.94.40]:36924 "EHLO arroyo.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756059Ab3C1Jej (ORCPT ); Thu, 28 Mar 2013 05:34:39 -0400 Received: from dlelxv30.itg.ti.com ([172.17.2.17]) by arroyo.ext.ti.com (8.13.7/8.13.7) with ESMTP id r2S9YZAJ026540; Thu, 28 Mar 2013 04:34:35 -0500 Received: from DFLE72.ent.ti.com (dfle72.ent.ti.com [128.247.5.109]) by dlelxv30.itg.ti.com (8.13.8/8.13.8) with ESMTP id r2S9YZMx025764; Thu, 28 Mar 2013 04:34:35 -0500 Received: from dlelxv22.itg.ti.com (172.17.1.197) by DFLE72.ent.ti.com (128.247.5.109) with Microsoft SMTP Server id 14.2.342.3; Thu, 28 Mar 2013 04:34:34 -0500 Received: from barack.itg.ti.com (h112-202.vpn.ti.com [172.24.112.202]) by dlelxv22.itg.ti.com (8.13.8/8.13.8) with ESMTP id r2S9YXH6012248; Thu, 28 Mar 2013 04:34:33 -0500 From: Peter Ujfalusi To: Tony Lindgren CC: , , Subject: [PATCH v2] omap2: twl-common: Add default power configuration Date: Thu, 28 Mar 2013 10:34:36 +0100 Message-ID: <1364463276-22285-1-git-send-email-peter.ujfalusi@ti.com> X-Mailer: git-send-email 1.8.1.5 MIME-Version: 1.0 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org From: Matthias Brugger This patch adds a generic power script configuration. When rebooting an OMAP3530 at 125 MHz, the reboot hangs. With the generic power script, TWL4030 will be reset when a warm reset occures. This way the OMAP3530 does not hang on reboot. Signed-off-by: Matthias Brugger Signed-off-by: Peter Ujfalusi --- Tony, Matthias, I have marked the structs as __initdata to fix the section mismatch. Regards, Peter arch/arm/mach-omap2/twl-common.c | 38 ++++++++++++++++++++++++++++++++++++++ arch/arm/mach-omap2/twl-common.h | 1 + 2 files changed, 39 insertions(+) diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index 51e138c..7551bbc 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c @@ -121,6 +121,41 @@ static struct twl4030_audio_data omap3_audio_pdata = { .codec = &omap3_codec, }; +static struct twl4030_ins wrst_seq[] __initdata = { + {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_OFF), 2}, + {MSG_SINGULAR(DEV_GRP_P1, 0xf, RES_STATE_WRST), 15}, + {MSG_SINGULAR(DEV_GRP_P1, 0x10, RES_STATE_WRST), 15}, + {MSG_SINGULAR(DEV_GRP_P1, 0x7, RES_STATE_WRST), 0x60}, + {MSG_SINGULAR(DEV_GRP_P1, 0x19, RES_STATE_ACTIVE), 2}, + {MSG_SINGULAR(DEV_GRP_NULL, 0x1b, RES_STATE_ACTIVE), 2}, +}; + +static struct twl4030_script wrst_script __initdata = { + .script = wrst_seq, + .size = ARRAY_SIZE(wrst_seq), + .flags = TWL4030_WRST_SCRIPT, +}; + +static struct twl4030_script *omap3_power_scripts[] __initdata = { + &wrst_script, +}; + +static struct twl4030_resconfig omap3_rconfig[] __initdata = { + { .resource = RES_HFCLKOUT, .devgroup = DEV_GRP_P3, .type = -1, + .type2 = -1 }, + { .resource = RES_VDD1, .devgroup = DEV_GRP_P1, .type = -1, + .type2 = -1 }, + { .resource = RES_VDD2, .devgroup = DEV_GRP_P1, .type = -1, + .type2 = -1 }, + { 0, 0}, +}; + +static struct twl4030_power_data omap3_power_pdata __initdata = { + .scripts = omap3_power_scripts, + .num = ARRAY_SIZE(omap3_power_scripts), + .resource_config = omap3_rconfig, +}; + static struct regulator_consumer_supply omap3_vdda_dac_supplies[] = { REGULATOR_SUPPLY("vdda_dac", "omapdss_venc"), }; @@ -225,6 +260,9 @@ void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data, if (pdata_flags & TWL_COMMON_PDATA_AUDIO && !pmic_data->audio) pmic_data->audio = &omap3_audio_pdata; + if (pdata_flags & TWL_COMMON_PDATA_POWER && !pmic_data->power) + pmic_data->power = &omap3_power_pdata; + /* Common regulator configurations */ if (regulators_flags & TWL_COMMON_REGULATOR_VDAC && !pmic_data->vdac) pmic_data->vdac = &omap3_vdac_idata; diff --git a/arch/arm/mach-omap2/twl-common.h b/arch/arm/mach-omap2/twl-common.h index 24b65d0..b64590b8 100644 --- a/arch/arm/mach-omap2/twl-common.h +++ b/arch/arm/mach-omap2/twl-common.h @@ -7,6 +7,7 @@ #define TWL_COMMON_PDATA_BCI (1 << 1) #define TWL_COMMON_PDATA_MADC (1 << 2) #define TWL_COMMON_PDATA_AUDIO (1 << 3) +#define TWL_COMMON_PDATA_POWER (1 << 4) /* Common LDO regulators for TWL4030/TWL6030 */ #define TWL_COMMON_REGULATOR_VDAC (1 << 0)