mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
Additional power management and ACPI updates for v3.20-rc1
- Revert a recent ACPI LPSS driver commit that prevented the touchpad
driver from loading on Dell XPS13 (Jarkko Nikula).
- Make the ACPI LPSS driver disable the I2C controllers and deassert
SPI host controllers resets at startup on Intel BayTrail and Braswell
SoCs in case they have been left in wrong states by the platform
firmware which then may casuse fatal controller driver failures during
resume from hibernation (Mika Westerberg).
- Make two recently added ACPI EC messages look better (Scot Doyle).
- Reduce the printk level of a recently added debug message related to
ACPI resources that may become noisy in some cases (Rafael J Wysocki).
- Add a new ACPI backlight blacklist entry for Samsung Series 9
(900X3C/900X3D/900X3E/900X4C/900X4D) laptops where the native backlight
interface doesn't work while the ACPI based one does (Jens Reyer).
- Make the PNP sybsystem's core code use __request_region() followed by
__release_region() instead of __check_region() which then will allow
us to get rid of the latter as it has no more users (Jakub Sitnicki).
- Fix a build breakage and an issue with two __init functions that may be
called after initialization in the s3c cpufreq driver (Arnd Bergmann).
- Make the powernv cpuidle driver read target_residency values for idle
states from a Device Tree (as we have the suitable DT bindings for that
now) and improve the parsing of the powermgmt DT node in that driver
(Preeti U Murthy).
/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
iQIcBAABCAAGBQJU6Ak8AAoJEILEb/54YlRx1IIP/3AJFuLlgQ15rFAMV5c1Wel8
RhyD0JcucgtGu9bLoFj2wMpy/FDv+zpqp4vF5qrgcY3OcKoBYvM18HzDbFyiThqo
4aTZEeuv14ipstBqPwt8aABAjWZ9elEb0h3zuEgekoc9UUpMYzHhSUaKbWzNHfd9
Uba6+aS1haE9zWeVJw+30uWFy42SLgbu1qDWizq/Lg+jUMRJvNsPsDzeTF4mP5Vs
aF4BD0Fo9X2spnSYK16dHq08lQ7UzkHCAj9aY8KCHVIWwOOMjM7/kpa0TRNNqIm0
7UIH+ZwX8gGBJ2WQ1vQXESI0veJdH5B+xXtsaxXz+5VEWBI9sf4QjM7bti+HaGSw
wgB5bgV3gV9T9uNbmwTCBkC9qRt+6cvqxLvH+z85l/U2cDMr0UqP4YlStqupfWOW
fXTUsL7pmy9tKtzeaKzoBxKooRSMZg/GmscHtHlb4Ps+Vu/3vHsw7fJ3cOylvcT1
3IFtTt2JWicKWr3zcDtcqRBSgCLwUgLS8Zh25O7UT9WfNjo897Rccdta1jWvZppQ
SLZxBB+SZGWe8s/RucwmYEB4+gKP8dNIPFIuVTK6RkMAnL4Iv13cNR/1X1GyaLpF
exvs9i0/bIYVDfRXlVaS3RRSDKKZkNJdddQUD27PrCKRffOezjzBV+gohadXFbbn
tkou9vHrphL0Zql/y6Iw
=us59
-----END PGP SIGNATURE-----
Merge tag 'pm+acpi-3.20-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull one more batch of power management and ACPI updates from Rafael Wysocki:
"These are mostly fixes on top of the previously merged recent PM and
ACPI material.
First, one commit that broke the ACPI LPSS (Low-Power Subsystem)
driver on a Dell box is reverted and there are two stable-candidate
fixes for that driver. Another fix cleans up two recently added ACPI
EC messages that look odd and the printk level of a noisy debug
message in the core ACPI resources handling code is reduced.
In addition to that we have two stable-candidate fixes for the s3c
cpufreq driver, two cpuidle powernv driver updates related to Device
Trees and a PNP subsystem cleanup that will allow us to get rid of
some old ugliness going forward. Also there is a new blacklist entry
for the ACPI backlight code.
Specifics:
- Revert a recent ACPI LPSS driver commit that prevented the touchpad
driver from loading on Dell XPS13 (Jarkko Nikula).
- Make the ACPI LPSS driver disable the I2C controllers and deassert
SPI host controllers resets at startup on Intel BayTrail and
Braswell SoCs in case they have been left in wrong states by the
platform firmware which then may casuse fatal controller driver
failures during resume from hibernation (Mika Westerberg).
- Make two recently added ACPI EC messages look better (Scot Doyle).
- Reduce the printk level of a recently added debug message related
to ACPI resources that may become noisy in some cases (Rafael J
Wysocki).
- Add a new ACPI backlight blacklist entry for Samsung Series 9
(900X3C/900X3D/900X3E/900X4C/900X4D) laptops where the native
backlight interface doesn't work while the ACPI based one does
(Jens Reyer).
- Make the PNP sybsystem's core code use __request_region() followed
by __release_region() instead of __check_region() which then will
allow us to get rid of the latter as it has no more users (Jakub
Sitnicki).
- Fix a build breakage and an issue with two __init functions that
may be called after initialization in the s3c cpufreq driver (Arnd
Bergmann).
- Make the powernv cpuidle driver read target_residency values for
idle states from a Device Tree (as we have the suitable DT bindings
for that now) and improve the parsing of the powermgmt DT node in
that driver (Preeti U Murthy)"
* tag 'pm+acpi-3.20-rc1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
cpuidle: powernv: Avoid endianness conversions while parsing DT
cpufreq: s3c: remove last use of resume_clocks callback
cpufreq: s3c: remove incorrect __init annotations
ACPI / LPSS: Deassert resets for SPI host controllers on Braswell
ACPI / LPSS: Always disable I2C host controllers
ACPI / resources: Change pr_info() to pr_debug() for debug information
ACPI / video: Disable native backlight on Samsung Series 9 laptops
cpuidle: powernv: Read target_residency value of idle states from DT if available
Revert "ACPI / LPSS: Remove non-existing clock control from Intel Lynxpoint I2C"
ACPI / EC: Remove non-standard log emphasis
PNP: Switch from __check_region() to __request_region()
This commit is contained in:
commit
cd50b70ccd
8 changed files with 86 additions and 54 deletions
|
|
@ -105,7 +105,7 @@ static void lpss_uart_setup(struct lpss_private_data *pdata)
|
|||
}
|
||||
}
|
||||
|
||||
static void byt_i2c_setup(struct lpss_private_data *pdata)
|
||||
static void lpss_deassert_reset(struct lpss_private_data *pdata)
|
||||
{
|
||||
unsigned int offset;
|
||||
u32 val;
|
||||
|
|
@ -114,9 +114,18 @@ static void byt_i2c_setup(struct lpss_private_data *pdata)
|
|||
val = readl(pdata->mmio_base + offset);
|
||||
val |= LPSS_RESETS_RESET_APB | LPSS_RESETS_RESET_FUNC;
|
||||
writel(val, pdata->mmio_base + offset);
|
||||
}
|
||||
|
||||
#define LPSS_I2C_ENABLE 0x6c
|
||||
|
||||
static void byt_i2c_setup(struct lpss_private_data *pdata)
|
||||
{
|
||||
lpss_deassert_reset(pdata);
|
||||
|
||||
if (readl(pdata->mmio_base + pdata->dev_desc->prv_offset))
|
||||
pdata->fixed_clk_rate = 133000000;
|
||||
|
||||
writel(0, pdata->mmio_base + LPSS_I2C_ENABLE);
|
||||
}
|
||||
|
||||
static struct lpss_device_desc lpt_dev_desc = {
|
||||
|
|
@ -125,7 +134,7 @@ static struct lpss_device_desc lpt_dev_desc = {
|
|||
};
|
||||
|
||||
static struct lpss_device_desc lpt_i2c_dev_desc = {
|
||||
.flags = LPSS_CLK | LPSS_LTR,
|
||||
.flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_LTR,
|
||||
.prv_offset = 0x800,
|
||||
};
|
||||
|
||||
|
|
@ -166,6 +175,12 @@ static struct lpss_device_desc byt_i2c_dev_desc = {
|
|||
.setup = byt_i2c_setup,
|
||||
};
|
||||
|
||||
static struct lpss_device_desc bsw_spi_dev_desc = {
|
||||
.flags = LPSS_CLK | LPSS_CLK_GATE | LPSS_CLK_DIVIDER | LPSS_SAVE_CTX,
|
||||
.prv_offset = 0x400,
|
||||
.setup = lpss_deassert_reset,
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
#define LPSS_ADDR(desc) (0UL)
|
||||
|
|
@ -198,7 +213,7 @@ static const struct acpi_device_id acpi_lpss_device_ids[] = {
|
|||
/* Braswell LPSS devices */
|
||||
{ "80862288", LPSS_ADDR(byt_pwm_dev_desc) },
|
||||
{ "8086228A", LPSS_ADDR(byt_uart_dev_desc) },
|
||||
{ "8086228E", LPSS_ADDR(byt_spi_dev_desc) },
|
||||
{ "8086228E", LPSS_ADDR(bsw_spi_dev_desc) },
|
||||
{ "808622C1", LPSS_ADDR(byt_i2c_dev_desc) },
|
||||
|
||||
{ "INT3430", LPSS_ADDR(lpt_dev_desc) },
|
||||
|
|
|
|||
|
|
@ -680,7 +680,7 @@ static void acpi_ec_start(struct acpi_ec *ec, bool resuming)
|
|||
/* Enable GPE for event processing (SCI_EVT=1) */
|
||||
if (!resuming)
|
||||
acpi_ec_submit_request(ec);
|
||||
pr_info("+++++ EC started +++++\n");
|
||||
pr_debug("EC started\n");
|
||||
}
|
||||
spin_unlock_irqrestore(&ec->lock, flags);
|
||||
}
|
||||
|
|
@ -712,7 +712,7 @@ static void acpi_ec_stop(struct acpi_ec *ec, bool suspending)
|
|||
acpi_ec_complete_request(ec);
|
||||
clear_bit(EC_FLAGS_STARTED, &ec->flags);
|
||||
clear_bit(EC_FLAGS_STOPPED, &ec->flags);
|
||||
pr_info("+++++ EC stopped +++++\n");
|
||||
pr_debug("EC stopped\n");
|
||||
}
|
||||
spin_unlock_irqrestore(&ec->lock, flags);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ static bool acpi_dev_resource_len_valid(u64 start, u64 end, u64 len, bool io)
|
|||
if (len && reslen && reslen == len && start <= end)
|
||||
return true;
|
||||
|
||||
pr_info("ACPI: invalid or unassigned resource %s [%016llx - %016llx] length [%016llx]\n",
|
||||
pr_debug("ACPI: invalid or unassigned resource %s [%016llx - %016llx] length [%016llx]\n",
|
||||
io ? "io" : "mem", start, end, len);
|
||||
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -540,6 +540,15 @@ static struct dmi_system_id video_dmi_table[] __initdata = {
|
|||
DMI_MATCH(DMI_PRODUCT_NAME, "730U3E/740U3E"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* https://bugs.freedesktop.org/show_bug.cgi?id=87286 */
|
||||
.callback = video_disable_native_backlight,
|
||||
.ident = "SAMSUNG 900X3C/900X3D/900X3E/900X4C/900X4D",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "900X3C/900X3D/900X3E/900X4C/900X4D"),
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
/* https://bugzilla.redhat.com/show_bug.cgi?id=1163574 */
|
||||
|
|
|
|||
Loading…
Reference in a new issue