From patchwork Fri May 8 15:12:06 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aggarwal, Anuj" X-Patchwork-Id: 22602 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n48FCqNB024726 for ; Fri, 8 May 2009 15:12:52 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753871AbZEHPMS (ORCPT ); Fri, 8 May 2009 11:12:18 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754620AbZEHPMR (ORCPT ); Fri, 8 May 2009 11:12:17 -0400 Received: from arroyo.ext.ti.com ([192.94.94.40]:37793 "EHLO arroyo.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753871AbZEHPMR (ORCPT ); Fri, 8 May 2009 11:12:17 -0400 Received: from dbdp31.itg.ti.com ([172.24.170.98]) by arroyo.ext.ti.com (8.13.7/8.13.7) with ESMTP id n48FC8WT015858 for ; Fri, 8 May 2009 10:12:13 -0500 Received: from psplinux050.india.ti.com (localhost [127.0.0.1]) by dbdp31.itg.ti.com (8.13.8/8.13.8) with ESMTP id n48FC60b010973; Fri, 8 May 2009 20:42:06 +0530 (IST) Received: from psplinux050.india.ti.com (localhost [127.0.0.1]) by psplinux050.india.ti.com (8.13.1/8.13.1) with ESMTP id n48FC6dO015713; Fri, 8 May 2009 20:42:06 +0530 Received: (from a0393534@localhost) by psplinux050.india.ti.com (8.13.1/8.13.1/Submit) id n48FC6xn015710; Fri, 8 May 2009 20:42:06 +0530 From: Anuj Aggarwal To: linux-omap@vger.kernel.org Cc: Anuj Aggarwal Subject: [PATCH 1/3] Regulator: Add pmic.c file to regulator framework Date: Fri, 8 May 2009 20:42:06 +0530 Message-Id: <1241795526-15667-1-git-send-email-anuj.aggarwal@ti.com> X-Mailer: git-send-email 1.6.2.4 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org Added drivers\regulator\pmic.c file to the regulator framework which will have the board specific information for different regulators and will do the regulator initialization depending on one which is available. Signed-off-by: Anuj Aggarwal --- drivers/regulator/Makefile | 2 +- drivers/regulator/pmic.c | 103 ++++++++++++++++++++++++++++++++++++++++ include/linux/regulator/pmic.h | 29 +++++++++++ 3 files changed, 133 insertions(+), 1 deletions(-) create mode 100644 drivers/regulator/pmic.c create mode 100644 include/linux/regulator/pmic.h -- 1.6.2.4 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile index bac133a..c0d87bf 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -3,7 +3,7 @@ # -obj-$(CONFIG_REGULATOR) += core.o +obj-$(CONFIG_REGULATOR) += core.o pmic.o obj-$(CONFIG_REGULATOR_FIXED_VOLTAGE) += fixed.o obj-$(CONFIG_REGULATOR_VIRTUAL_CONSUMER) += virtual.o diff --git a/drivers/regulator/pmic.c b/drivers/regulator/pmic.c new file mode 100644 index 0000000..36ed341 --- /dev/null +++ b/drivers/regulator/pmic.c @@ -0,0 +1,103 @@ +/* + * pmic.c + * + * Supports run-time detection of different Power Management ICs. + * + * Copyright (C) 2009 Texas Instrument Incorporated - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any kind, + * whether express or implied; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ +#include +#include +#include + +/* + * Definitions specific to TWL4030 + */ + +/* + * Definitions specific to TPS62350 + */ + +/* + * Definitions specific to TPS65023 + */ + +static int flag_pmic_twl4030; +static int flag_pmic_tps6235x; +static int flag_pmic_tps65023; + +/* + * Detect the current PMIC, set one of the flags + */ +static inline int detect_pmic(void) +{ + /* How? Any suggestions?? This is a temporary solution. */ +#if defined(CONFIG_TWL4030_CORE) + flag_pmic_twl4030 = 1; +#endif + +#if defined(CONFIG_OMAP3EVM_TPS6235X) + flag_pmic_tps6235x = 1; +#endif + +#if defined(CONFIG_OMAP3EVM_TPS65023) + flag_pmic_tps65023 = 1; +#endif + + return 0; +} + +/* Functions to detect which PMIC is present */ + +int pmic_is_twl4030(void) +{ + return flag_pmic_twl4030; +} + +int pmic_is_tps6235x(void) +{ + return flag_pmic_tps6235x; +} + +int pmic_is_tps65020(void) { return 0; } + +int pmic_is_tps65021(void) { return 0; } + +int pmic_is_tps65022(void) { return 0; } + +int pmic_is_tps65023(void) +{ + return flag_pmic_tps65023; +} + +int pmic_is_tps65950(void) +{ + return flag_pmic_twl4030; +} + +/* Detects the PMIC and initializes it accordingly */ +int pmic_init(void) +{ +#if defined(CONFIG_TWL4030_CORE) + /* do stuff specific to TWL4030 */ +#endif + +#if defined(CONFIG_OMAP3EVM_TPS6235X) + /* do stuff specific to TPS62350 */ +#endif + +#if defined(CONFIG_OMAP3EVM_TPS65023) + /* do stuff specific to TPS65023 */ +#endif + + return 0; +} + diff --git a/include/linux/regulator/pmic.h b/include/linux/regulator/pmic.h new file mode 100644 index 0000000..5956740 --- /dev/null +++ b/include/linux/regulator/pmic.h @@ -0,0 +1,29 @@ +/* + * pmic.h + * + * Supports run-time detection of different Power Management ICs. + * + * Copyright (C) 2009 Texas Instrument Incorporated http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation version 2. + * + * This program is distributed as is WITHOUT ANY WARRANTY of any kind, whether + * express or implied; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +/* Functions to detect which PMIC is present */ +int pmic_is_twl4030(void); +int pmic_is_tps6235x(void); +int pmic_is_tps65020(void); +int pmic_is_tps65021(void); +int pmic_is_tps65022(void); +int pmic_is_tps65023(void); +int pmic_is_tps65950(void); + +/* Detects the PMIC and initializes it accordingly */ +int pmic_init(void); +