From: Pankaj Dubey <pankaj.dubey@samsung.com> To: "'Kukjin Kim'" <kgene.kim@samsung.com>, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org Cc: linux@arm.linux.org.uk, t.figa@samsung.com, vikas.sajjan@samsung.com, joshi@samsung.com, naushad@samsung.com, thomas.ab@samsung.com, chow.kim@samsung.com Subject: RE: [PATCH v7 3/4] ARM: EXYNOS: Add platform driver support for Exynos PMU Date: Fri, 25 Jul 2014 11:02:57 +0530 [thread overview] Message-ID: <000501cfa7c9$e59f4840$b0ddd8c0$@samsung.com> (raw) In-Reply-To: <067501cfa7bd$8e6cb460$ab461d20$@samsung.com> Hi Kukjin, On Friday, July 25, 2014 Kukjin Kim wrote: > Subject: RE: [PATCH v7 3/4] ARM: EXYNOS: Add platform driver support for > Exynos PMU > > Pankaj Dubey wrote: > > > > This patch modifies Exynos Power Management Unit (PMU) initialization > > implementation in following way: > > > > - Added platform driver support and probe function where Exynos PMU > > driver will register itself as syscon provider with syscon framework. > > - Added platform struct exynos_pmu_data to hold platform specific data. > > - For each SoC's PMU support now we can add platform data and statically > > bind PMU configuration and SoC specific initialization function. > > - Separate each SoC's PMU initialization function and make it as part of > > platform data. > > - It also removes uses of soc_is_exynosXYZ(). > > > > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com> > > Reviewed-by: Tomasz Figa <t.figa@samsung.com> > > --- > > arch/arm/mach-exynos/Kconfig | 1 + > > arch/arm/mach-exynos/pmu.c | 185 > +++++++++++++++++++++++++++++++++--------- > > 2 files changed, 146 insertions(+), 40 deletions(-) > > > Looks good to me, will apply this and 4/4. > We need to hold these two patches until dependent patch [1] from Tomasz Figa gets merged. [1]: mfd: syscon: Decouple syscon interface from syscon devices https://lkml.org/lkml/2014/6/24/188 Thanks, Pankaj Dubey > Thanks, > Kukjin > > > diff --git a/arch/arm/mach-exynos/Kconfig > > b/arch/arm/mach-exynos/Kconfig index 8f9b66c..a2944ac 100644 > > --- a/arch/arm/mach-exynos/Kconfig > > +++ b/arch/arm/mach-exynos/Kconfig > > @@ -24,6 +24,7 @@ menuconfig ARCH_EXYNOS > > select PM_GENERIC_DOMAINS if PM_RUNTIME > > select S5P_DEV_MFC > > select SRAM > > + select MFD_SYSCON > > help > > Support for SAMSUNG EXYNOS SoCs (EXYNOS4/5) > > > > diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c > > index ff9d23f..5b76728 100644 > > --- a/arch/arm/mach-exynos/pmu.c > > +++ b/arch/arm/mach-exynos/pmu.c > > @@ -1,5 +1,5 @@ > > /* > > - * Copyright (c) 2011-2012 Samsung Electronics Co., Ltd. > > + * Copyright (c) 2011-2014 Samsung Electronics Co., Ltd. > > * http://www.samsung.com/ > > * > > * EXYNOS - CPU PMU(Power Management Unit) support @@ -10,12 +10,28 > > @@ > > */ > > > > #include <linux/io.h> > > -#include <linux/kernel.h> > > +#include <linux/of.h> > > +#include <linux/platform_device.h> > > +#include <linux/regmap.h> > > +#include <linux/mfd/syscon.h> > > > > #include "common.h" > > #include "regs-pmu.h" > > > > -static const struct exynos_pmu_conf *exynos_pmu_config; > > +struct exynos_pmu_data { > > + const struct exynos_pmu_conf *pmu_config; > > + const struct exynos_pmu_conf *pmu_config_extra; > > + > > + void (*pmu_init)(void); > > + void (*powerdown_conf)(enum sys_powerdown); }; > > + > > +struct exynos_pmu_context { > > + struct device *dev; > > + const struct exynos_pmu_data *pmu_data; }; > > + > > +static struct exynos_pmu_context *pmu_context; > > > > static const struct exynos_pmu_conf exynos4210_pmu_config[] = { > > /* { .offset = offset, .val = { AFTR, LPA, SLEEP } */ @@ -335,7 > > +351,7 @@ static unsigned int const exynos5_list_diable_wfi_wfe[] = { > > EXYNOS5_ISP_ARM_OPTION, > > }; > > > > -static void exynos5_init_pmu(void) > > +static void exynos5_powerdown_conf(enum sys_powerdown mode) > > { > > unsigned int i; > > unsigned int tmp; > > @@ -372,51 +388,140 @@ void exynos_sys_powerdown_conf(enum > > sys_powerdown mode) { > > unsigned int i; > > > > - if (soc_is_exynos5250()) > > - exynos5_init_pmu(); > > + const struct exynos_pmu_data *pmu_data = pmu_context->pmu_data; > > > > - for (i = 0; (exynos_pmu_config[i].offset != PMU_TABLE_END) ; i++) > > - pmu_raw_writel(exynos_pmu_config[i].val[mode], > > - exynos_pmu_config[i].offset); > > + if (pmu_data->powerdown_conf) > > + pmu_data->powerdown_conf(mode); > > > > - if (soc_is_exynos4412()) { > > - for (i = 0; exynos4412_pmu_config[i].offset != PMU_TABLE_END ; > i++) > > - pmu_raw_writel(exynos4412_pmu_config[i].val[mode], > > - exynos4412_pmu_config[i].offset); > > + if (pmu_data->pmu_config) { > > + for (i = 0; (pmu_data->pmu_config[i].offset != PMU_TABLE_END) > ; i++) > > + pmu_raw_writel(pmu_data->pmu_config[i].val[mode], > > + pmu_data->pmu_config[i].offset); > > + } > > + > > + if (pmu_data->pmu_config_extra) { > > + for (i = 0; pmu_data->pmu_config_extra[i].offset != > PMU_TABLE_END; i++) > > + pmu_raw_writel(pmu_data->pmu_config_extra[i].val[mode], > > + pmu_data->pmu_config_extra[i].offset); > > } > > } > > > > -static int __init exynos_pmu_init(void) > > +static void exynos5250_pmu_init(void) > > { > > unsigned int value; > > + /* > > + * When SYS_WDTRESET is set, watchdog timer reset request > > + * is ignored by power management unit. > > + */ > > + value = pmu_raw_readl(EXYNOS5_AUTO_WDTRESET_DISABLE); > > + value &= ~EXYNOS5_SYS_WDTRESET; > > + pmu_raw_writel(value, EXYNOS5_AUTO_WDTRESET_DISABLE); > > + > > + value = pmu_raw_readl(EXYNOS5_MASK_WDTRESET_REQUEST); > > + value &= ~EXYNOS5_SYS_WDTRESET; > > + pmu_raw_writel(value, EXYNOS5_MASK_WDTRESET_REQUEST); } > > + > > +static const struct exynos_pmu_data exynos4210_pmu_data = { > > + .pmu_config = exynos4210_pmu_config, > > +}; > > + > > +static const struct exynos_pmu_data exynos4212_pmu_data = { > > + .pmu_config = exynos4x12_pmu_config, > > +}; > > + > > +static const struct exynos_pmu_data exynos4412_pmu_data = { > > + .pmu_config = exynos4x12_pmu_config, > > + .pmu_config_extra = exynos4412_pmu_config, > > +}; > > + > > +static const struct exynos_pmu_data exynos5250_pmu_data = { > > + .pmu_config = exynos5250_pmu_config, > > + .pmu_init = exynos5250_pmu_init, > > + .powerdown_conf = exynos5_powerdown_conf, > > +}; > > + > > +static const struct regmap_config pmu_regmap_config = { > > + .reg_bits = 32, > > + .val_bits = 32, > > + .reg_stride = 4, > > +}; > > > > - exynos_pmu_config = exynos4210_pmu_config; > > - > > - if (soc_is_exynos4210()) { > > - exynos_pmu_config = exynos4210_pmu_config; > > - pr_info("EXYNOS4210 PMU Initialize\n"); > > - } else if (soc_is_exynos4212() || soc_is_exynos4412()) { > > - exynos_pmu_config = exynos4x12_pmu_config; > > - pr_info("EXYNOS4x12 PMU Initialize\n"); > > - } else if (soc_is_exynos5250()) { > > - /* > > - * When SYS_WDTRESET is set, watchdog timer reset request > > - * is ignored by power management unit. > > - */ > > - value = > pmu_raw_readl(EXYNOS5_AUTO_WDTRESET_DISABLE); > > - value &= ~EXYNOS5_SYS_WDTRESET; > > - pmu_raw_writel(value, > EXYNOS5_AUTO_WDTRESET_DISABLE); > > - > > - value = > pmu_raw_readl(EXYNOS5_MASK_WDTRESET_REQUEST); > > - value &= ~EXYNOS5_SYS_WDTRESET; > > - pmu_raw_writel(value, > EXYNOS5_MASK_WDTRESET_REQUEST); > > - > > - exynos_pmu_config = exynos5250_pmu_config; > > - pr_info("EXYNOS5250 PMU Initialize\n"); > > - } else { > > - pr_info("EXYNOS: PMU not supported\n"); > > +/* > > + * PMU platform driver and devicetree bindings. > > + */ > > +static const struct of_device_id exynos_pmu_of_device_ids[] = { > > + { > > + .compatible = "samsung,exynos4210-pmu", > > + .data = &exynos4210_pmu_data, > > + }, { > > + .compatible = "samsung,exynos4212-pmu", > > + .data = &exynos4212_pmu_data, > > + }, { > > + .compatible = "samsung,exynos4412-pmu", > > + .data = &exynos4412_pmu_data, > > + }, { > > + .compatible = "samsung,exynos5250-pmu", > > + .data = &exynos5250_pmu_data, > > + }, > > + { /*sentinel*/ }, > > +}; > > + > > +static int exynos_pmu_probe(struct platform_device *pdev) { > > + const struct of_device_id *match; > > + struct device *dev = &pdev->dev; > > + struct regmap *regmap; > > + struct resource *res; > > + > > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > + pmu_base_addr = devm_ioremap_resource(dev, res); > > + if (IS_ERR(pmu_base_addr)) > > + return PTR_ERR(pmu_base_addr); > > + > > + pmu_context = devm_kzalloc(&pdev->dev, > > + sizeof(struct exynos_pmu_context), > > + GFP_KERNEL); > > + if (!pmu_context) { > > + dev_err(dev, "Cannot allocate memory.\n"); > > + return -ENOMEM; > > + } > > + pmu_context->dev = dev; > > + > > + regmap = devm_regmap_init_mmio(dev, pmu_base_addr, > > + &pmu_regmap_config); > > + if (IS_ERR(regmap)) { > > + dev_err(dev, "regmap init failed\n"); > > + return PTR_ERR(regmap); > > } > > > > + devm_syscon_register(dev, regmap); > > + > > + match = of_match_node(exynos_pmu_of_device_ids, pdev->dev.of_node); > > + > > + pmu_context->pmu_data = match->data; > > + > > + if (pmu_context->pmu_data->pmu_init) > > + pmu_context->pmu_data->pmu_init(); > > + > > + platform_set_drvdata(pdev, pmu_context); > > + > > + dev_dbg(dev, "Exynos PMU Driver probe done\n"); > > return 0; > > } > > -arch_initcall(exynos_pmu_init); > > + > > +static struct platform_driver exynos_pmu_driver = { > > + .driver = { > > + .name = "exynos-pmu", > > + .owner = THIS_MODULE, > > + .of_match_table = exynos_pmu_of_device_ids, > > + }, > > + .probe = exynos_pmu_probe, > > +}; > > + > > +static int __init exynos_pmu_init(void) { > > + return platform_driver_register(&exynos_pmu_driver); > > + > > +} > > +postcore_initcall(exynos_pmu_init); > > -- > > 1.7.9.5
WARNING: multiple messages have this Message-ID (diff)
From: pankaj.dubey@samsung.com (Pankaj Dubey) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v7 3/4] ARM: EXYNOS: Add platform driver support for Exynos PMU Date: Fri, 25 Jul 2014 11:02:57 +0530 [thread overview] Message-ID: <000501cfa7c9$e59f4840$b0ddd8c0$@samsung.com> (raw) In-Reply-To: <067501cfa7bd$8e6cb460$ab461d20$@samsung.com> Hi Kukjin, On Friday, July 25, 2014 Kukjin Kim wrote: > Subject: RE: [PATCH v7 3/4] ARM: EXYNOS: Add platform driver support for > Exynos PMU > > Pankaj Dubey wrote: > > > > This patch modifies Exynos Power Management Unit (PMU) initialization > > implementation in following way: > > > > - Added platform driver support and probe function where Exynos PMU > > driver will register itself as syscon provider with syscon framework. > > - Added platform struct exynos_pmu_data to hold platform specific data. > > - For each SoC's PMU support now we can add platform data and statically > > bind PMU configuration and SoC specific initialization function. > > - Separate each SoC's PMU initialization function and make it as part of > > platform data. > > - It also removes uses of soc_is_exynosXYZ(). > > > > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com> > > Reviewed-by: Tomasz Figa <t.figa@samsung.com> > > --- > > arch/arm/mach-exynos/Kconfig | 1 + > > arch/arm/mach-exynos/pmu.c | 185 > +++++++++++++++++++++++++++++++++--------- > > 2 files changed, 146 insertions(+), 40 deletions(-) > > > Looks good to me, will apply this and 4/4. > We need to hold these two patches until dependent patch [1] from Tomasz Figa gets merged. [1]: mfd: syscon: Decouple syscon interface from syscon devices https://lkml.org/lkml/2014/6/24/188 Thanks, Pankaj Dubey > Thanks, > Kukjin > > > diff --git a/arch/arm/mach-exynos/Kconfig > > b/arch/arm/mach-exynos/Kconfig index 8f9b66c..a2944ac 100644 > > --- a/arch/arm/mach-exynos/Kconfig > > +++ b/arch/arm/mach-exynos/Kconfig > > @@ -24,6 +24,7 @@ menuconfig ARCH_EXYNOS > > select PM_GENERIC_DOMAINS if PM_RUNTIME > > select S5P_DEV_MFC > > select SRAM > > + select MFD_SYSCON > > help > > Support for SAMSUNG EXYNOS SoCs (EXYNOS4/5) > > > > diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c > > index ff9d23f..5b76728 100644 > > --- a/arch/arm/mach-exynos/pmu.c > > +++ b/arch/arm/mach-exynos/pmu.c > > @@ -1,5 +1,5 @@ > > /* > > - * Copyright (c) 2011-2012 Samsung Electronics Co., Ltd. > > + * Copyright (c) 2011-2014 Samsung Electronics Co., Ltd. > > * http://www.samsung.com/ > > * > > * EXYNOS - CPU PMU(Power Management Unit) support @@ -10,12 +10,28 > > @@ > > */ > > > > #include <linux/io.h> > > -#include <linux/kernel.h> > > +#include <linux/of.h> > > +#include <linux/platform_device.h> > > +#include <linux/regmap.h> > > +#include <linux/mfd/syscon.h> > > > > #include "common.h" > > #include "regs-pmu.h" > > > > -static const struct exynos_pmu_conf *exynos_pmu_config; > > +struct exynos_pmu_data { > > + const struct exynos_pmu_conf *pmu_config; > > + const struct exynos_pmu_conf *pmu_config_extra; > > + > > + void (*pmu_init)(void); > > + void (*powerdown_conf)(enum sys_powerdown); }; > > + > > +struct exynos_pmu_context { > > + struct device *dev; > > + const struct exynos_pmu_data *pmu_data; }; > > + > > +static struct exynos_pmu_context *pmu_context; > > > > static const struct exynos_pmu_conf exynos4210_pmu_config[] = { > > /* { .offset = offset, .val = { AFTR, LPA, SLEEP } */ @@ -335,7 > > +351,7 @@ static unsigned int const exynos5_list_diable_wfi_wfe[] = { > > EXYNOS5_ISP_ARM_OPTION, > > }; > > > > -static void exynos5_init_pmu(void) > > +static void exynos5_powerdown_conf(enum sys_powerdown mode) > > { > > unsigned int i; > > unsigned int tmp; > > @@ -372,51 +388,140 @@ void exynos_sys_powerdown_conf(enum > > sys_powerdown mode) { > > unsigned int i; > > > > - if (soc_is_exynos5250()) > > - exynos5_init_pmu(); > > + const struct exynos_pmu_data *pmu_data = pmu_context->pmu_data; > > > > - for (i = 0; (exynos_pmu_config[i].offset != PMU_TABLE_END) ; i++) > > - pmu_raw_writel(exynos_pmu_config[i].val[mode], > > - exynos_pmu_config[i].offset); > > + if (pmu_data->powerdown_conf) > > + pmu_data->powerdown_conf(mode); > > > > - if (soc_is_exynos4412()) { > > - for (i = 0; exynos4412_pmu_config[i].offset != PMU_TABLE_END ; > i++) > > - pmu_raw_writel(exynos4412_pmu_config[i].val[mode], > > - exynos4412_pmu_config[i].offset); > > + if (pmu_data->pmu_config) { > > + for (i = 0; (pmu_data->pmu_config[i].offset != PMU_TABLE_END) > ; i++) > > + pmu_raw_writel(pmu_data->pmu_config[i].val[mode], > > + pmu_data->pmu_config[i].offset); > > + } > > + > > + if (pmu_data->pmu_config_extra) { > > + for (i = 0; pmu_data->pmu_config_extra[i].offset != > PMU_TABLE_END; i++) > > + pmu_raw_writel(pmu_data->pmu_config_extra[i].val[mode], > > + pmu_data->pmu_config_extra[i].offset); > > } > > } > > > > -static int __init exynos_pmu_init(void) > > +static void exynos5250_pmu_init(void) > > { > > unsigned int value; > > + /* > > + * When SYS_WDTRESET is set, watchdog timer reset request > > + * is ignored by power management unit. > > + */ > > + value = pmu_raw_readl(EXYNOS5_AUTO_WDTRESET_DISABLE); > > + value &= ~EXYNOS5_SYS_WDTRESET; > > + pmu_raw_writel(value, EXYNOS5_AUTO_WDTRESET_DISABLE); > > + > > + value = pmu_raw_readl(EXYNOS5_MASK_WDTRESET_REQUEST); > > + value &= ~EXYNOS5_SYS_WDTRESET; > > + pmu_raw_writel(value, EXYNOS5_MASK_WDTRESET_REQUEST); } > > + > > +static const struct exynos_pmu_data exynos4210_pmu_data = { > > + .pmu_config = exynos4210_pmu_config, > > +}; > > + > > +static const struct exynos_pmu_data exynos4212_pmu_data = { > > + .pmu_config = exynos4x12_pmu_config, > > +}; > > + > > +static const struct exynos_pmu_data exynos4412_pmu_data = { > > + .pmu_config = exynos4x12_pmu_config, > > + .pmu_config_extra = exynos4412_pmu_config, > > +}; > > + > > +static const struct exynos_pmu_data exynos5250_pmu_data = { > > + .pmu_config = exynos5250_pmu_config, > > + .pmu_init = exynos5250_pmu_init, > > + .powerdown_conf = exynos5_powerdown_conf, > > +}; > > + > > +static const struct regmap_config pmu_regmap_config = { > > + .reg_bits = 32, > > + .val_bits = 32, > > + .reg_stride = 4, > > +}; > > > > - exynos_pmu_config = exynos4210_pmu_config; > > - > > - if (soc_is_exynos4210()) { > > - exynos_pmu_config = exynos4210_pmu_config; > > - pr_info("EXYNOS4210 PMU Initialize\n"); > > - } else if (soc_is_exynos4212() || soc_is_exynos4412()) { > > - exynos_pmu_config = exynos4x12_pmu_config; > > - pr_info("EXYNOS4x12 PMU Initialize\n"); > > - } else if (soc_is_exynos5250()) { > > - /* > > - * When SYS_WDTRESET is set, watchdog timer reset request > > - * is ignored by power management unit. > > - */ > > - value = > pmu_raw_readl(EXYNOS5_AUTO_WDTRESET_DISABLE); > > - value &= ~EXYNOS5_SYS_WDTRESET; > > - pmu_raw_writel(value, > EXYNOS5_AUTO_WDTRESET_DISABLE); > > - > > - value = > pmu_raw_readl(EXYNOS5_MASK_WDTRESET_REQUEST); > > - value &= ~EXYNOS5_SYS_WDTRESET; > > - pmu_raw_writel(value, > EXYNOS5_MASK_WDTRESET_REQUEST); > > - > > - exynos_pmu_config = exynos5250_pmu_config; > > - pr_info("EXYNOS5250 PMU Initialize\n"); > > - } else { > > - pr_info("EXYNOS: PMU not supported\n"); > > +/* > > + * PMU platform driver and devicetree bindings. > > + */ > > +static const struct of_device_id exynos_pmu_of_device_ids[] = { > > + { > > + .compatible = "samsung,exynos4210-pmu", > > + .data = &exynos4210_pmu_data, > > + }, { > > + .compatible = "samsung,exynos4212-pmu", > > + .data = &exynos4212_pmu_data, > > + }, { > > + .compatible = "samsung,exynos4412-pmu", > > + .data = &exynos4412_pmu_data, > > + }, { > > + .compatible = "samsung,exynos5250-pmu", > > + .data = &exynos5250_pmu_data, > > + }, > > + { /*sentinel*/ }, > > +}; > > + > > +static int exynos_pmu_probe(struct platform_device *pdev) { > > + const struct of_device_id *match; > > + struct device *dev = &pdev->dev; > > + struct regmap *regmap; > > + struct resource *res; > > + > > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > + pmu_base_addr = devm_ioremap_resource(dev, res); > > + if (IS_ERR(pmu_base_addr)) > > + return PTR_ERR(pmu_base_addr); > > + > > + pmu_context = devm_kzalloc(&pdev->dev, > > + sizeof(struct exynos_pmu_context), > > + GFP_KERNEL); > > + if (!pmu_context) { > > + dev_err(dev, "Cannot allocate memory.\n"); > > + return -ENOMEM; > > + } > > + pmu_context->dev = dev; > > + > > + regmap = devm_regmap_init_mmio(dev, pmu_base_addr, > > + &pmu_regmap_config); > > + if (IS_ERR(regmap)) { > > + dev_err(dev, "regmap init failed\n"); > > + return PTR_ERR(regmap); > > } > > > > + devm_syscon_register(dev, regmap); > > + > > + match = of_match_node(exynos_pmu_of_device_ids, pdev->dev.of_node); > > + > > + pmu_context->pmu_data = match->data; > > + > > + if (pmu_context->pmu_data->pmu_init) > > + pmu_context->pmu_data->pmu_init(); > > + > > + platform_set_drvdata(pdev, pmu_context); > > + > > + dev_dbg(dev, "Exynos PMU Driver probe done\n"); > > return 0; > > } > > -arch_initcall(exynos_pmu_init); > > + > > +static struct platform_driver exynos_pmu_driver = { > > + .driver = { > > + .name = "exynos-pmu", > > + .owner = THIS_MODULE, > > + .of_match_table = exynos_pmu_of_device_ids, > > + }, > > + .probe = exynos_pmu_probe, > > +}; > > + > > +static int __init exynos_pmu_init(void) { > > + return platform_driver_register(&exynos_pmu_driver); > > + > > +} > > +postcore_initcall(exynos_pmu_init); > > -- > > 1.7.9.5
next prev parent reply other threads:[~2014-07-25 5:31 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-07-09 4:00 [PATCH v7 0/4] ARM: Exynos: PMU cleanup and refactoring for using DT Pankaj Dubey 2014-07-09 4:00 ` Pankaj Dubey 2014-07-09 4:00 ` [PATCH v7 1/4] ARM: EXYNOS: Add support for mapping PMU base address via DT Pankaj Dubey 2014-07-09 4:00 ` Pankaj Dubey 2014-07-10 13:49 ` Kukjin Kim 2014-07-10 13:49 ` Kukjin Kim 2014-07-27 3:33 ` Andreas Färber 2014-07-27 3:33 ` Andreas Färber 2014-07-09 4:00 ` [PATCH v7 2/4] ARM: EXYNOS: Refactored code for using PMU " Pankaj Dubey 2014-07-09 4:00 ` Pankaj Dubey 2014-07-10 13:52 ` Kukjin Kim 2014-07-10 13:52 ` Kukjin Kim 2014-07-09 4:00 ` [PATCH v7 3/4] ARM: EXYNOS: Add platform driver support for Exynos PMU Pankaj Dubey 2014-07-09 4:00 ` Pankaj Dubey 2014-07-25 4:04 ` Kukjin Kim 2014-07-25 4:04 ` Kukjin Kim 2014-07-25 5:32 ` Pankaj Dubey [this message] 2014-07-25 5:32 ` Pankaj Dubey 2014-07-25 11:00 ` Tomasz Figa 2014-07-25 11:00 ` Tomasz Figa 2014-07-28 3:10 ` Pankaj Dubey 2014-07-28 3:10 ` Pankaj Dubey 2014-08-18 17:42 ` Bartlomiej Zolnierkiewicz 2014-08-18 17:42 ` Bartlomiej Zolnierkiewicz 2014-08-19 14:30 ` Tomasz Figa 2014-08-19 14:30 ` Tomasz Figa 2014-08-21 14:07 ` Pankaj Dubey 2014-08-21 14:07 ` Pankaj Dubey 2014-08-21 15:59 ` Tomasz Figa 2014-08-21 15:59 ` Tomasz Figa 2014-07-09 4:00 ` [PATCH v7 4/4] ARM: EXYNOS: Move PMU specific definitions from common.h Pankaj Dubey 2014-07-09 4:00 ` Pankaj Dubey 2014-07-11 6:10 ` [PATCH v7 0/4] ARM: Exynos: PMU cleanup and refactoring for using DT Naveen Krishna Ch 2014-07-11 6:10 ` Naveen Krishna Ch 2014-07-11 6:10 ` Naveen Krishna Ch
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='000501cfa7c9$e59f4840$b0ddd8c0$@samsung.com' \ --to=pankaj.dubey@samsung.com \ --cc=chow.kim@samsung.com \ --cc=joshi@samsung.com \ --cc=kgene.kim@samsung.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=naushad@samsung.com \ --cc=t.figa@samsung.com \ --cc=thomas.ab@samsung.com \ --cc=vikas.sajjan@samsung.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.