mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Power management and ACPI updates for 3.10-rc1
- ARM big.LITTLE cpufreq driver from Viresh Kumar.
- exynos5440 cpufreq driver from Amit Daniel Kachhap.
- cpufreq core cleanup and code consolidation from Viresh Kumar and
Stratos Karafotis.
- cpufreq scalability improvement from Nathan Zimmer.
- AMD "frequency sensitivity feedback" powersave bias for the ondemand
cpufreq governor from Jacob Shin.
- cpuidle code consolidation and cleanups from Daniel Lezcano.
- ARM OMAP cpuidle fixes from Santosh Shilimkar and Daniel Lezcano.
- ACPICA fixes and other improvements from Bob Moore, Jung-uk Kim,
Lv Zheng, Yinghai Lu, Tang Chen, Colin Ian King, and Linn Crosetto.
- ACPI core updates related to hotplug from Toshi Kani, Paul Bolle,
Yasuaki Ishimatsu, and Rafael J. Wysocki.
- Intel Lynxpoint LPSS (Low-Power Subsystem) support improvements
from Rafael J. Wysocki and Andy Shevchenko.
/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
iQIcBAABAgAGBQJRf8M8AAoJEKhOf7ml8uNsud4P/3cabXP5lDipzibRrpOiONse
puuvIdhtNdMRMc3t1oSDjNH/w/JA51Gc+ICGFAORiyVmqxBc85mpT6J5ibqV7hNd
pCqbKJceoB5PajHZSx22e4wG9O7YN1k3r80p38IfFzA+Ct0KNSuE0ixMEfHKYjiq
p5pXswk6TY3gtBReH9agrafHqDtXw4IMTE0asMuJ+BorPW7vQeiNlrkuA+0qmDuu
26O0Pm2TVkx1ryfTjdM9zSZ9X2G4JuM8rm1/VFZWQJTExwlv3bA2Za1nvQNJlJ99
6JZ0JXfAehcEW2Ye0sqsZ8HSEabDVHM29QvvOszJ5RpBXERiOCHOkhvFleCoTpn0
Xq0rtXPrLMH1G28Ej+cxmsAjfzOLV2Byg30CAoI/GCLuQ+xh+VMCpuNYQuld25CG
9rtYd0fWESeYsAebhDcX0E3xyzJtbrHtOb9PyGwNkbAJ8YQfhVSMCOPi2SX2wa+Q
qXLXi2VaHvjBSUKcAv5BmM+Ya57Be+88D0LxbgXbUeOnYefUK1ljldKDDshkMjgG
P4LPdm4JpoB5ncXSOO1Dz9w9QnNcFexSUySd/TtKLNMha1vEHV8ISzNPYY+9IdXf
XN0VZbFnUDzdj+Fwna7zyFb1cGihDYJKAtpXvRd8Y6RGUxKx9uGLAFJZw/xZB/cR
KZKuML5O8MgJuef37F38
=H/se
-----END PGP SIGNATURE-----
Merge tag 'pm+acpi-3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull power management and ACPI updates from Rafael J Wysocki:
- ARM big.LITTLE cpufreq driver from Viresh Kumar.
- exynos5440 cpufreq driver from Amit Daniel Kachhap.
- cpufreq core cleanup and code consolidation from Viresh Kumar and
Stratos Karafotis.
- cpufreq scalability improvement from Nathan Zimmer.
- AMD "frequency sensitivity feedback" powersave bias for the ondemand
cpufreq governor from Jacob Shin.
- cpuidle code consolidation and cleanups from Daniel Lezcano.
- ARM OMAP cpuidle fixes from Santosh Shilimkar and Daniel Lezcano.
- ACPICA fixes and other improvements from Bob Moore, Jung-uk Kim, Lv
Zheng, Yinghai Lu, Tang Chen, Colin Ian King, and Linn Crosetto.
- ACPI core updates related to hotplug from Toshi Kani, Paul Bolle,
Yasuaki Ishimatsu, and Rafael J Wysocki.
- Intel Lynxpoint LPSS (Low-Power Subsystem) support improvements from
Rafael J Wysocki and Andy Shevchenko.
* tag 'pm+acpi-3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (192 commits)
cpufreq: Revert incorrect commit 5800043
cpufreq: MAINTAINERS: Add co-maintainer
cpuidle: add maintainer entry
ACPI / thermal: do not always return THERMAL_TREND_RAISING for active trip points
ARM: s3c64xx: cpuidle: use init/exit common routine
cpufreq: pxa2xx: initialize variables
ACPI: video: correct acpi_video_bus_add error processing
SH: cpuidle: use init/exit common routine
ARM: S5pv210: compiling issue, ARM_S5PV210_CPUFREQ needs CONFIG_CPU_FREQ_TABLE=y
ACPI: Fix wrong parameter passed to memblock_reserve
cpuidle: fix comment format
pnp: use %*phC to dump small buffers
isapnp: remove debug leftovers
ARM: imx: cpuidle: use init/exit common routine
ARM: davinci: cpuidle: use init/exit common routine
ARM: kirkwood: cpuidle: use init/exit common routine
ARM: calxeda: cpuidle: use init/exit common routine
ARM: tegra: cpuidle: use init/exit common routine for tegra3
ARM: tegra: cpuidle: use init/exit common routine for tegra2
ARM: OMAP4: cpuidle: use init/exit common routine
...
This commit is contained in:
commit
3ed1c478ef
253 changed files with 6938 additions and 4145 deletions
|
|
@ -1,2 +1,2 @@
|
|||
clk-x86-lpss-objs := clk-lpss.o clk-lpt.o
|
||||
clk-x86-lpss-objs := clk-lpt.o
|
||||
obj-$(CONFIG_X86_INTEL_LPSS) += clk-x86-lpss.o
|
||||
|
|
|
|||
|
|
@ -1,99 +0,0 @@
|
|||
/*
|
||||
* Intel Low Power Subsystem clocks.
|
||||
*
|
||||
* Copyright (C) 2013, Intel Corporation
|
||||
* Authors: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
* Heikki Krogerus <heikki.krogerus@linux.intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
static int clk_lpss_is_mmio_resource(struct acpi_resource *res, void *data)
|
||||
{
|
||||
struct resource r;
|
||||
return !acpi_dev_resource_memory(res, &r);
|
||||
}
|
||||
|
||||
static acpi_status clk_lpss_find_mmio(acpi_handle handle, u32 level,
|
||||
void *data, void **retval)
|
||||
{
|
||||
struct resource_list_entry *rentry;
|
||||
struct list_head resource_list;
|
||||
struct acpi_device *adev;
|
||||
const char *uid = data;
|
||||
int ret;
|
||||
|
||||
if (acpi_bus_get_device(handle, &adev))
|
||||
return AE_OK;
|
||||
|
||||
if (uid) {
|
||||
if (!adev->pnp.unique_id)
|
||||
return AE_OK;
|
||||
if (strcmp(uid, adev->pnp.unique_id))
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&resource_list);
|
||||
ret = acpi_dev_get_resources(adev, &resource_list,
|
||||
clk_lpss_is_mmio_resource, NULL);
|
||||
if (ret < 0)
|
||||
return AE_NO_MEMORY;
|
||||
|
||||
list_for_each_entry(rentry, &resource_list, node)
|
||||
if (resource_type(&rentry->res) == IORESOURCE_MEM) {
|
||||
*(struct resource *)retval = rentry->res;
|
||||
break;
|
||||
}
|
||||
|
||||
acpi_dev_free_resource_list(&resource_list);
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
* clk_register_lpss_gate - register LPSS clock gate
|
||||
* @name: name of this clock gate
|
||||
* @parent_name: parent clock name
|
||||
* @hid: ACPI _HID of the device
|
||||
* @uid: ACPI _UID of the device (optional)
|
||||
* @offset: LPSS PRV_CLOCK_PARAMS offset
|
||||
*
|
||||
* Creates and registers LPSS clock gate.
|
||||
*/
|
||||
struct clk *clk_register_lpss_gate(const char *name, const char *parent_name,
|
||||
const char *hid, const char *uid,
|
||||
unsigned offset)
|
||||
{
|
||||
struct resource res = { };
|
||||
void __iomem *mmio_base;
|
||||
acpi_status status;
|
||||
struct clk *clk;
|
||||
|
||||
/*
|
||||
* First try to look the device and its mmio resource from the
|
||||
* ACPI namespace.
|
||||
*/
|
||||
status = acpi_get_devices(hid, clk_lpss_find_mmio, (void *)uid,
|
||||
(void **)&res);
|
||||
if (ACPI_FAILURE(status) || !res.start)
|
||||
return ERR_PTR(-ENODEV);
|
||||
|
||||
mmio_base = ioremap(res.start, resource_size(&res));
|
||||
if (!mmio_base)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
clk = clk_register_gate(NULL, name, parent_name, 0, mmio_base + offset,
|
||||
0, 0, NULL);
|
||||
if (IS_ERR(clk))
|
||||
iounmap(mmio_base);
|
||||
|
||||
return clk;
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
* Intel Low Power Subsystem clock.
|
||||
*
|
||||
* Copyright (C) 2013, Intel Corporation
|
||||
* Authors: Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
* Heikki Krogerus <heikki.krogerus@linux.intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __CLK_LPSS_H
|
||||
#define __CLK_LPSS_H
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/clk.h>
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
extern struct clk *clk_register_lpss_gate(const char *name,
|
||||
const char *parent_name,
|
||||
const char *hid, const char *uid,
|
||||
unsigned offset);
|
||||
#else
|
||||
static inline struct clk *clk_register_lpss_gate(const char *name,
|
||||
const char *parent_name,
|
||||
const char *hid,
|
||||
const char *uid,
|
||||
unsigned offset)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __CLK_LPSS_H */
|
||||
|
|
@ -10,7 +10,6 @@
|
|||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/clkdev.h>
|
||||
#include <linux/clk-provider.h>
|
||||
|
|
@ -18,8 +17,6 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include "clk-lpss.h"
|
||||
|
||||
#define PRV_CLOCK_PARAMS 0x800
|
||||
|
||||
static int lpt_clk_probe(struct platform_device *pdev)
|
||||
|
|
@ -34,40 +31,6 @@ static int lpt_clk_probe(struct platform_device *pdev)
|
|||
|
||||
/* Shared DMA clock */
|
||||
clk_register_clkdev(clk, "hclk", "INTL9C60.0.auto");
|
||||
|
||||
/* SPI clocks */
|
||||
clk = clk_register_lpss_gate("spi0_clk", "lpss_clk", "INT33C0", NULL,
|
||||
PRV_CLOCK_PARAMS);
|
||||
if (!IS_ERR(clk))
|
||||
clk_register_clkdev(clk, NULL, "INT33C0:00");
|
||||
|
||||
clk = clk_register_lpss_gate("spi1_clk", "lpss_clk", "INT33C1", NULL,
|
||||
PRV_CLOCK_PARAMS);
|
||||
if (!IS_ERR(clk))
|
||||
clk_register_clkdev(clk, NULL, "INT33C1:00");
|
||||
|
||||
/* I2C clocks */
|
||||
clk = clk_register_lpss_gate("i2c0_clk", "lpss_clk", "INT33C2", NULL,
|
||||
PRV_CLOCK_PARAMS);
|
||||
if (!IS_ERR(clk))
|
||||
clk_register_clkdev(clk, NULL, "INT33C2:00");
|
||||
|
||||
clk = clk_register_lpss_gate("i2c1_clk", "lpss_clk", "INT33C3", NULL,
|
||||
PRV_CLOCK_PARAMS);
|
||||
if (!IS_ERR(clk))
|
||||
clk_register_clkdev(clk, NULL, "INT33C3:00");
|
||||
|
||||
/* UART clocks */
|
||||
clk = clk_register_lpss_gate("uart0_clk", "lpss_clk", "INT33C4", NULL,
|
||||
PRV_CLOCK_PARAMS);
|
||||
if (!IS_ERR(clk))
|
||||
clk_register_clkdev(clk, NULL, "INT33C4:00");
|
||||
|
||||
clk = clk_register_lpss_gate("uart1_clk", "lpss_clk", "INT33C5", NULL,
|
||||
PRV_CLOCK_PARAMS);
|
||||
if (!IS_ERR(clk))
|
||||
clk_register_clkdev(clk, NULL, "INT33C5:00");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -79,8 +42,7 @@ static struct platform_driver lpt_clk_driver = {
|
|||
.probe = lpt_clk_probe,
|
||||
};
|
||||
|
||||
static int __init lpt_clk_init(void)
|
||||
int __init lpt_clk_init(void)
|
||||
{
|
||||
return platform_driver_register(&lpt_clk_driver);
|
||||
}
|
||||
arch_initcall(lpt_clk_init);
|
||||
|
|
|
|||
Loading…
Reference in a new issue