From patchwork Sun May 15 23:38:06 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 1494 Return-Path: Delivered-To: unknown Received: from imap.gmail.com (74.125.159.109) by localhost6.localdomain6 with IMAP4-SSL; 08 Jun 2011 14:52:26 -0000 Delivered-To: patches@linaro.org Received: by 10.224.61.3 with SMTP id r3cs68658qah; Sun, 15 May 2011 16:38:11 -0700 (PDT) Received: by 10.223.97.142 with SMTP id l14mr2638709fan.137.1305502690471; Sun, 15 May 2011 16:38:10 -0700 (PDT) Received: from mail.df.lth.se (mail.df.lth.se [194.47.250.12]) by mx.google.com with ESMTPS id z17si5427278fam.51.2011.05.15.16.38.08 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 15 May 2011 16:38:09 -0700 (PDT) Received-SPF: pass (google.com: domain of triad@df.lth.se designates 194.47.250.12 as permitted sender) client-ip=194.47.250.12; Authentication-Results: mx.google.com; spf=pass (google.com: domain of triad@df.lth.se designates 194.47.250.12 as permitted sender) smtp.mail=triad@df.lth.se Received: from mer.df.lth.se (mer.df.lth.se [194.47.250.37]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.df.lth.se (Postfix) with ESMTPS id 7327D65D7C; Mon, 16 May 2011 01:38:08 +0200 (CEST) Received: from mer.df.lth.se (triad@localhost.localdomain [127.0.0.1]) by mer.df.lth.se (8.14.3/8.14.3/Debian-9.4) with ESMTP id p4FNc8SC032673; Mon, 16 May 2011 01:38:08 +0200 Received: (from triad@localhost) by mer.df.lth.se (8.14.3/8.14.3/Submit) id p4FNc8SR032672; Mon, 16 May 2011 01:38:08 +0200 From: Linus Walleij To: Samuel Ortiz , linux-kernel@vger.kernel.org Cc: Lee Jones , Linus Walleij Subject: [PATCH 07/13] mach-ux500: move the DB8500 PRCMU driver to MFD Date: Mon, 16 May 2011 01:38:06 +0200 Message-Id: <1305502686-32646-1-git-send-email-linus.walleij@linaro.org> X-Mailer: git-send-email 1.7.2.5 We have decided that this function arbiter fits better in the MFD subsystem. Since we need to concatenate the split header files we move it basically like this: mv mach-ux500/prcmu-db8500.c drivers/mfd/db8500-prcmu.c mv mach-ux500/include/mach/prcmu-defs.h include/linux/mfd/db8500-prcmu.h mv mach-ux500/include/mach/prcmu-regs.h drivers/mfd/db8500-prcmu-regs.h mach-ux500/include/mach/prcmu.h >> include/linux/mfd/db8500-prcmu.h rm arch/arm/mach-ux500/include/mach/prcmu.h Then we update different #include statements and Makefile orders etc to make the PRCMU driver compile, link and boot in the new place without really changing any code. Signed-off-by: Linus Walleij --- arch/arm/mach-ux500/Kconfig | 1 + arch/arm/mach-ux500/Makefile | 2 +- arch/arm/mach-ux500/cpu.c | 2 +- arch/arm/mach-ux500/cpufreq.c | 3 +- arch/arm/mach-ux500/include/mach/prcmu-defs.h | 30 ----------------- drivers/mfd/Kconfig | 12 ++++++- drivers/mfd/Makefile | 4 ++- drivers/mfd/ab8500-i2c.c | 3 +- .../mfd/db8500-prcmu-regs.h | 0 .../prcmu-db8500.c => drivers/mfd/db8500-prcmu.c | 5 ++- .../prcmu.h => include/linux/mfd/db8500-prcmu.h | 34 ++++++++++++++++++- 11 files changed, 54 insertions(+), 42 deletions(-) delete mode 100644 arch/arm/mach-ux500/include/mach/prcmu-defs.h rename arch/arm/mach-ux500/include/mach/prcmu-regs.h => drivers/mfd/db8500-prcmu-regs.h (100%) rename arch/arm/mach-ux500/prcmu-db8500.c => drivers/mfd/db8500-prcmu.c (99%) rename arch/arm/mach-ux500/include/mach/prcmu.h => include/linux/mfd/db8500-prcmu.h (54%) diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig index 5862601..8071d27 100644 --- a/arch/arm/mach-ux500/Kconfig +++ b/arch/arm/mach-ux500/Kconfig @@ -15,6 +15,7 @@ config UX500_SOC_DB5500 config UX500_SOC_DB8500 bool "DB8500" + select MFD_DB8500_PRCMU endmenu diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile index 2a08a10..7a1d43e 100644 --- a/arch/arm/mach-ux500/Makefile +++ b/arch/arm/mach-ux500/Makefile @@ -5,7 +5,7 @@ obj-y := clock.o cpu.o devices.o devices-common.o \ id.o usb.o obj-$(CONFIG_UX500_SOC_DB5500) += cpu-db5500.o dma-db5500.o -obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o prcmu-db8500.o +obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o obj-$(CONFIG_MACH_U8500) += board-mop500.o board-mop500-sdi.o \ board-mop500-regulators.o \ board-mop500-uib.o board-mop500-stuib.o \ diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index 0190e0e..11360f7 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -19,7 +20,6 @@ #include #include #include -#include #include "clock.h" diff --git a/arch/arm/mach-ux500/cpufreq.c b/arch/arm/mach-ux500/cpufreq.c index 5c5b747..d196939 100644 --- a/arch/arm/mach-ux500/cpufreq.c +++ b/arch/arm/mach-ux500/cpufreq.c @@ -17,10 +17,9 @@ #include #include #include +#include #include -#include -#include #define DRIVER_NAME "cpufreq-u8500" #define CPUFREQ_NAME "u8500" diff --git a/arch/arm/mach-ux500/include/mach/prcmu-defs.h b/arch/arm/mach-ux500/include/mach/prcmu-defs.h deleted file mode 100644 index 848ba64..0000000 --- a/arch/arm/mach-ux500/include/mach/prcmu-defs.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) STMicroelectronics 2009 - * Copyright (C) ST-Ericsson SA 2010 - * - * Author: Sundar Iyer - * Author: Martin Persson - * - * License Terms: GNU General Public License v2 - * - * PRCM Unit definitions - */ - -#ifndef __MACH_PRCMU_DEFS_H -#define __MACH_PRCMU_DEFS_H - -enum prcmu_cpu_opp { - CPU_OPP_INIT = 0x00, - CPU_OPP_NO_CHANGE = 0x01, - CPU_OPP_100 = 0x02, - CPU_OPP_50 = 0x03, - CPU_OPP_MAX = 0x04, - CPU_OPP_EXT_CLK = 0x07 -}; -enum prcmu_ape_opp { - APE_OPP_NO_CHANGE = 0x00, - APE_OPP_100 = 0x02, - APE_OPP_50 = 0x03, -}; - -#endif /* __MACH_PRCMU_DEFS_H */ diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 3ed3ff0..7eaeb97 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -538,7 +538,7 @@ config AB8500_CORE config AB8500_I2C_CORE bool "AB8500 register access via PRCMU I2C" - depends on AB8500_CORE && UX500_SOC_DB8500 + depends on AB8500_CORE && MFD_DB8500_PRCMU default y help This enables register access to the AB8500 chip via PRCMU I2C. @@ -575,6 +575,16 @@ config AB3550_CORE LEDs, vibrator, system power and temperature, power management and ALSA sound. +config MFD_DB8500_PRCMU + bool "ST-Ericsson DB8500 Power Reset Control Management Unit" + depends on UX500_SOC_DB8500 + select MFD_CORE + help + Select this option to enable support for the DB8500 Power Reset + and Control Management Unit. This is basically an autonomous + system controller running an XP70 microprocessor, which is accessed + through a register map. + config MFD_CS5535 tristate "Support for CS5535 and CS5536 southbridge core functions" select MFD_CORE diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index 419caa9..814c57a 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -74,9 +74,11 @@ obj-$(CONFIG_AB3100_CORE) += ab3100-core.o obj-$(CONFIG_AB3100_OTP) += ab3100-otp.o obj-$(CONFIG_AB3550_CORE) += ab3550-core.o obj-$(CONFIG_AB8500_CORE) += ab8500-core.o ab8500-sysctrl.o -obj-$(CONFIG_AB8500_I2C_CORE) += ab8500-i2c.o obj-$(CONFIG_AB8500_DEBUG) += ab8500-debugfs.o obj-$(CONFIG_AB8500_GPADC) += ab8500-gpadc.o +obj-$(CONFIG_MFD_DB8500_PRCMU) += db8500-prcmu.o +# ab8500-i2c need to come after db8500-prcmu (which provides the channel) +obj-$(CONFIG_AB8500_I2C_CORE) += ab8500-i2c.o obj-$(CONFIG_MFD_TIMBERDALE) += timberdale.o obj-$(CONFIG_PMIC_ADP5520) += adp5520.o obj-$(CONFIG_LPC_SCH) += lpc_sch.o diff --git a/drivers/mfd/ab8500-i2c.c b/drivers/mfd/ab8500-i2c.c index 821e6b8..9be541c 100644 --- a/drivers/mfd/ab8500-i2c.c +++ b/drivers/mfd/ab8500-i2c.c @@ -11,8 +11,7 @@ #include #include #include - -#include +#include static int ab8500_i2c_write(struct ab8500 *ab8500, u16 addr, u8 data) { diff --git a/arch/arm/mach-ux500/include/mach/prcmu-regs.h b/drivers/mfd/db8500-prcmu-regs.h similarity index 100% rename from arch/arm/mach-ux500/include/mach/prcmu-regs.h rename to drivers/mfd/db8500-prcmu-regs.h diff --git a/arch/arm/mach-ux500/prcmu-db8500.c b/drivers/mfd/db8500-prcmu.c similarity index 99% rename from arch/arm/mach-ux500/prcmu-db8500.c rename to drivers/mfd/db8500-prcmu.c index c522d26..31f18c8 100644 --- a/arch/arm/mach-ux500/prcmu-db8500.c +++ b/drivers/mfd/db8500-prcmu.c @@ -20,10 +20,11 @@ #include #include #include +#include #include -#include -#include + +#include "db8500-prcmu-regs.h" /* Global var to runtime determine TCDM base for v2 or v1 */ static __iomem void *tcdm_base; diff --git a/arch/arm/mach-ux500/include/mach/prcmu.h b/include/linux/mfd/db8500-prcmu.h similarity index 54% rename from arch/arm/mach-ux500/include/mach/prcmu.h rename to include/linux/mfd/db8500-prcmu.h index c49e456..d591d79 100644 --- a/arch/arm/mach-ux500/include/mach/prcmu.h +++ b/include/linux/mfd/db8500-prcmu.h @@ -2,6 +2,37 @@ * Copyright (C) STMicroelectronics 2009 * Copyright (C) ST-Ericsson SA 2010 * + * Author: Sundar Iyer + * Author: Martin Persson + * + * License Terms: GNU General Public License v2 + * + * PRCM Unit definitions + */ + +#ifndef __MACH_PRCMU_DEFS_H +#define __MACH_PRCMU_DEFS_H + +enum prcmu_cpu_opp { + CPU_OPP_INIT = 0x00, + CPU_OPP_NO_CHANGE = 0x01, + CPU_OPP_100 = 0x02, + CPU_OPP_50 = 0x03, + CPU_OPP_MAX = 0x04, + CPU_OPP_EXT_CLK = 0x07 +}; +enum prcmu_ape_opp { + APE_OPP_NO_CHANGE = 0x00, + APE_OPP_100 = 0x02, + APE_OPP_50 = 0x03, +}; + +#endif /* __MACH_PRCMU_DEFS_H */ + +/* + * Copyright (C) STMicroelectronics 2009 + * Copyright (C) ST-Ericsson SA 2010 + * * Author: Kumar Sanghvi * Author: Sundar Iyer * Author: Mattias Nilsson @@ -12,7 +43,6 @@ */ #ifndef __MACH_PRCMU_H #define __MACH_PRCMU_H -#include void __init prcmu_early_init(void); int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); @@ -21,7 +51,7 @@ int prcmu_set_ape_opp(enum prcmu_ape_opp opp); int prcmu_set_cpu_opp(enum prcmu_cpu_opp opp); int prcmu_set_ape_cpu_opps(enum prcmu_ape_opp ape_opp, enum prcmu_cpu_opp cpu_opp); -int prcmu_get_ape_opp(void); +enum prcmu_ape_opp prcmu_get_ape_opp(void); int prcmu_get_cpu_opp(void); bool prcmu_has_arm_maxopp(void);