Revert "Merge branch 'master' into baytrail"

This reverts commit 7511bcf2e6, reversing
changes made to cd44fa829c.

This should get the tree back to the state it was before the errant push.
The history will be ugly because Fedora disallows force pushing (sigh), but
oh well.
This commit is contained in:
Josh Boyer 2014-11-26 16:51:00 -05:00
parent 06ec1977a7
commit 96440958bc
11 changed files with 8 additions and 892 deletions

View File

@ -1,148 +0,0 @@
From bbadbc67de278123e28dd6f9ee7e88b6ada56ce4 Mon Sep 17 00:00:00 2001
From: Lan Tianyu <tianyu.lan@intel.com>
Date: Fri, 21 Mar 2014 16:42:12 +0800
Subject: [PATCH] ACPI: temporary dep solution for battery support
This is a dep workaround for battery support on Asus T100TA and the formal
dep solution is under developing. This patch is just for test and will
not be upstreamed.
---
drivers/acpi/scan.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++---
drivers/i2c/i2c-acpi.c | 1 +
include/linux/acpi.h | 1 +
3 files changed, 63 insertions(+), 3 deletions(-)
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 7efe546..254afb7 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -36,6 +36,7 @@ bool acpi_force_hot_remove;
static const char *dummy_hid = "device";
+static LIST_HEAD(acpi_bus_dep_device_list);
static LIST_HEAD(acpi_bus_id_list);
static DEFINE_MUTEX(acpi_scan_lock);
static LIST_HEAD(acpi_scan_handlers_list);
@@ -43,6 +44,12 @@ DEFINE_MUTEX(acpi_device_lock);
LIST_HEAD(acpi_wakeup_device_list);
static DEFINE_MUTEX(acpi_hp_context_lock);
+
+struct acpi_dep_handle {
+ struct list_head node;
+ acpi_handle handle;
+};
+
struct acpi_device_bus_id{
char bus_id[15];
unsigned int instance_no;
@@ -2027,10 +2034,22 @@ static void acpi_scan_init_hotplug(struct acpi_device *adev)
}
}
+
+static int acpi_dep_device_check(acpi_handle handle)
+{
+ struct acpi_dep_handle *dep;
+
+ list_for_each_entry(dep, &acpi_bus_dep_device_list, node)
+ if (dep->handle == handle)
+ return -EEXIST;
+ return 0;
+}
+
static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
void *not_used, void **return_value)
{
struct acpi_device *device = NULL;
+ struct acpi_dep_handle *dep = NULL;
int type;
unsigned long long sta;
int result;
@@ -2048,9 +2067,24 @@ static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
return AE_OK;
}
- acpi_add_single_object(&device, handle, type, sta);
- if (!device)
- return AE_CTRL_DEPTH;
+ if (!acpi_dep_device_check(handle)
+ && acpi_has_method(handle, "_BIX")
+ && acpi_has_method(handle, "_DEP")) {
+ dep = kmalloc(sizeof(struct acpi_dep_handle), GFP_KERNEL);
+ if (!dep)
+ return AE_CTRL_DEPTH;
+ dep->handle = handle;
+ list_add_tail(&dep->node , &acpi_bus_dep_device_list);
+
+ acpi_handle_info(dep->handle,
+ "is added to dep device list.\n");
+
+ return AE_OK;
+ } else {
+ acpi_add_single_object(&device, handle, type, sta);
+ if (!device)
+ return AE_CTRL_DEPTH;
+ }
acpi_scan_init_hotplug(device);
@@ -2061,6 +2095,30 @@ static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
return AE_OK;
}
+int acpi_walk_dep_device_list(void)
+{
+ struct acpi_dep_handle *dep, *tmp;
+ acpi_status status;
+ unsigned long long sta;
+
+ list_for_each_entry_safe(dep, tmp, &acpi_bus_dep_device_list, node) {
+ status = acpi_evaluate_integer(dep->handle, "_STA", NULL, &sta);
+
+ if (ACPI_FAILURE(status)) {
+ acpi_handle_warn(dep->handle,
+ "Status check failed (0x%x)\n", status);
+ } else if (sta & ACPI_STA_DEVICE_ENABLED) {
+ acpi_bus_scan(dep->handle);
+ acpi_handle_info(dep->handle,
+ "Device is readly\n");
+ list_del(&dep->node);
+ kfree(dep);
+ }
+ }
+ return 0;
+}
+EXPORT_SYMBOL_GPL(acpi_walk_dep_device_list);
+
static int acpi_scan_attach_handler(struct acpi_device *device)
{
struct acpi_hardware_id *hwid;
diff --git a/drivers/i2c/i2c-acpi.c b/drivers/i2c/i2c-acpi.c
index a0ae867..471490a 100644
--- a/drivers/i2c/i2c-acpi.c
+++ b/drivers/i2c/i2c-acpi.c
@@ -349,6 +349,7 @@ int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
return -ENOMEM;
}
+ acpi_walk_dep_device_list();
return 0;
}
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 667204c..66ad0dd 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -115,6 +115,7 @@ int acpi_boot_init (void);
void acpi_boot_table_init (void);
int acpi_mps_check (void);
int acpi_numa_init (void);
+int acpi_walk_dep_device_list(void);
int acpi_table_init (void);
int acpi_table_parse(char *id, acpi_tbl_table_handler handler);
--
1.8.3.1

View File

@ -1,24 +0,0 @@
From 69968772071bb8632a57f42ec77a3acdddbe74d7 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Mon, 14 Apr 2014 16:05:32 -0700
Subject: [PATCH] add device ID for Dell Venue 8 Pro's wireless adapter
---
drivers/net/wireless/ath/ath6kl/sdio.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/ath/ath6kl/sdio.c b/drivers/net/wireless/ath/ath6kl/sdio.c
index 7126bdd..f403ebb 100644
--- a/drivers/net/wireless/ath/ath6kl/sdio.c
+++ b/drivers/net/wireless/ath/ath6kl/sdio.c
@@ -1403,6 +1403,7 @@ static const struct sdio_device_id ath6kl_sdio_devices[] = {
{SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_AR6003_BASE | 0x1))},
{SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_AR6004_BASE | 0x0))},
{SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_AR6004_BASE | 0x1))},
+ {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_AR6004_BASE | 0x18))},
{},
};
--
1.9.0

View File

@ -1,233 +0,0 @@
From patchwork Thu Nov 20 14:12:12 2014
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: [V2] ACPI: Add _DEP(Operation Region Dependencies) support to fix
battery issue on the Asus T100TA
From: "lan,Tianyu" <tianyu.lan@intel.com>
X-Patchwork-Id: 5348511
Message-Id: <1416492733-18597-1-git-send-email-tianyu.lan@intel.com>
To: rjw@rjwysocki.net, lenb@kernel.org, wsa@the-dreams.de,
robert.moore@intel.com, lv.zheng@intel.com, shigorin@gmail.com,
adamw@happyassassin.net, jan.brummer@tabos.org,
mika.westerberg@linux.intel.com
Cc: Lan Tianyu <tianyu.lan@intel.com>, linux-acpi@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, devel@acpica.org
Date: Thu, 20 Nov 2014 22:12:12 +0800
ACPI 5.0 introduces _DEP to designate device objects that OSPM should
assign a higher priority in start ordering due to future operation region
accesses.
On Asus T100TA, ACPI battery info are read from a I2C slave device via
I2C operation region. Before I2C operation region handler is installed,
battery _STA always returns 0. There is a _DEP method of designating
start order under battery device node.
This patch is to implement _DEP feature to fix battery issue on the Asus T100TA.
Introducing acpi_dep_list and adding dep_unmet count in the struct
acpi_device. During ACPI namespace scan, create struct acpi_dep_data for a
valid pair of master (device pointed to by _DEP)/slave(device with _DEP), record
master's and slave's ACPI handle in it and put it into acpi_dep_list. The dep_unmet
count will increase by one if there is a device under its _DEP. Driver's probe() should
return EPROBE_DEFER when find dep_unmet is larger than 0. When I2C operation
region handler is installed, remove all struct acpi_dep_data on the acpi_dep_list
whose master is pointed to I2C host controller and decrease slave's dep_unmet.
When dep_unmet decreases to 0, all _DEP conditions are met and then do acpi_bus_attach()
for the device in order to resolve battery _STA issue on the Asus T100TA.
Reference: https://bugzilla.kernel.org/show_bug.cgi?id=69011
Tested-by: Jan-Michael Brummer <jan.brummer@tabos.org>
Tested-by: Adam Williamson <adamw@happyassassin.net>
Tested-by: Michael Shigorin <shigorin@gmail.com>
Acked-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
Change since V1:
Remove redundant blank line and some coding style fixs.
drivers/acpi/battery.c | 4 +++
drivers/acpi/scan.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++
drivers/i2c/i2c-core.c | 1 +
include/acpi/acpi_bus.h | 1 +
include/linux/acpi.h | 1 +
5 files changed, 93 insertions(+)
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index 8ec8a89..d98ba43 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -1180,6 +1180,10 @@ static int acpi_battery_add(struct acpi_device *device)
if (!device)
return -EINVAL;
+
+ if (device->dep_unmet)
+ return -EPROBE_DEFER;
+
battery = kzalloc(sizeof(struct acpi_battery), GFP_KERNEL);
if (!battery)
return -ENOMEM;
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 9cb5cca..54a4102 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -36,6 +36,8 @@ bool acpi_force_hot_remove;
static const char *dummy_hid = "device";
+static LIST_HEAD(acpi_dep_list);
+static DEFINE_MUTEX(acpi_dep_list_lock);
static LIST_HEAD(acpi_bus_id_list);
static DEFINE_MUTEX(acpi_scan_lock);
static LIST_HEAD(acpi_scan_handlers_list);
@@ -43,6 +45,12 @@ DEFINE_MUTEX(acpi_device_lock);
LIST_HEAD(acpi_wakeup_device_list);
static DEFINE_MUTEX(acpi_hp_context_lock);
+struct acpi_dep_data {
+ struct list_head node;
+ acpi_handle master;
+ acpi_handle slave;
+};
+
struct acpi_device_bus_id{
char bus_id[15];
unsigned int instance_no;
@@ -2193,6 +2201,60 @@ static void acpi_scan_init_hotplug(struct acpi_device *adev)
}
}
+static void acpi_device_dep_initialize(struct acpi_device *adev)
+{
+ struct acpi_dep_data *dep;
+ struct acpi_handle_list dep_devices;
+ struct acpi_device_info *info;
+ acpi_status status;
+ int i, skip;
+
+ if (!acpi_has_method(adev->handle, "_DEP"))
+ return;
+
+ status = acpi_evaluate_reference(adev->handle, "_DEP", NULL,
+ &dep_devices);
+ if (ACPI_FAILURE(status)) {
+ dev_err(&adev->dev, "Failed to evaluate _DEP.\n");
+ return;
+ }
+
+ for (i = 0; i < dep_devices.count; i++) {
+ status = acpi_get_object_info(dep_devices.handles[i], &info);
+ if (ACPI_FAILURE(status)) {
+ dev_err(&adev->dev, "Error reading device info\n");
+ continue;
+ }
+
+ /*
+ * Skip the dependency of Windows System Power
+ * Management Controller
+ */
+ if (info->valid & ACPI_VALID_HID
+ && !strcmp(info->hardware_id.string, "INT3396"))
+ skip = 1;
+ else
+ skip = 0;
+
+ kfree(info);
+
+ if (skip)
+ continue;
+
+ dep = kzalloc(sizeof(struct acpi_dep_data), GFP_KERNEL);
+ if (!dep)
+ return;
+
+ dep->master = dep_devices.handles[i];
+ dep->slave = adev->handle;
+ adev->dep_unmet++;
+
+ mutex_lock(&acpi_dep_list_lock);
+ list_add_tail(&dep->node , &acpi_dep_list);
+ mutex_unlock(&acpi_dep_list_lock);
+ }
+}
+
static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
void *not_used, void **return_value)
{
@@ -2219,6 +2281,7 @@ static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
return AE_CTRL_DEPTH;
acpi_scan_init_hotplug(device);
+ acpi_device_dep_initialize(device);
out:
if (!*return_value)
@@ -2339,6 +2402,29 @@ static void acpi_bus_attach(struct acpi_device *device)
device->handler->hotplug.notify_online(device);
}
+void acpi_walk_dep_device_list(acpi_handle handle)
+{
+ struct acpi_dep_data *dep, *tmp;
+ struct acpi_device *adev;
+
+ mutex_lock(&acpi_dep_list_lock);
+ list_for_each_entry_safe(dep, tmp, &acpi_dep_list, node) {
+ if (dep->master == handle) {
+ acpi_bus_get_device(dep->slave, &adev);
+ if (!adev)
+ continue;
+
+ adev->dep_unmet--;
+ if (!adev->dep_unmet)
+ acpi_bus_attach(adev);
+ list_del(&dep->node);
+ kfree(dep);
+ }
+ }
+ mutex_unlock(&acpi_dep_list_lock);
+}
+EXPORT_SYMBOL_GPL(acpi_walk_dep_device_list);
+
/**
* acpi_bus_scan - Add ACPI device node objects in a given namespace scope.
* @handle: Root of the namespace scope to scan.
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index f43b4e1..68aeb8e 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -403,6 +403,7 @@ static int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
return -ENOMEM;
}
+ acpi_walk_dep_device_list(handle);
return 0;
}
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 7d1ce40..d539084 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -372,6 +372,7 @@ struct acpi_device {
void *driver_data;
struct device dev;
unsigned int physical_node_count;
+ unsigned int dep_unmet;
struct list_head physical_node_list;
struct mutex physical_node_lock;
void (*remove)(struct acpi_device *);
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 10f2ed9..e09f7f4 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -428,6 +428,7 @@ extern bool acpi_driver_match_device(struct device *dev,
const struct device_driver *drv);
int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *);
int acpi_device_modalias(struct device *, char *, int);
+void acpi_walk_dep_device_list(acpi_handle handle);
struct platform_device *acpi_create_platform_device(struct acpi_device *);
#define ACPI_PTR(_ptr) (_ptr)

View File

@ -1,270 +0,0 @@
diff -ur old/drivers/gpu/drm/i915/i915_drv.h linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/gpu/drm/i915/i915_drv.h
--- old/drivers/gpu/drm/i915/i915_drv.h 2014-11-24 16:07:51.597050369 -0800
+++ linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/gpu/drm/i915/i915_drv.h 2014-11-24 16:08:28.199423974 -0800
@@ -2223,6 +2223,7 @@
bool disable_vtd_wa;
int use_mmio_flip;
bool mmio_debug;
+ bool force_backlight_pmic;
};
extern struct i915_params i915 __read_mostly;
diff -ur old/drivers/gpu/drm/i915/i915_params.c linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/gpu/drm/i915/i915_params.c
--- old/drivers/gpu/drm/i915/i915_params.c 2014-11-24 16:07:51.590050297 -0800
+++ linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/gpu/drm/i915/i915_params.c 2014-11-24 16:08:28.200423985 -0800
@@ -51,6 +51,7 @@
.disable_vtd_wa = 0,
.use_mmio_flip = 0,
.mmio_debug = 0,
+ .force_backlight_pmic = 0,
};
module_param_named(modeset, i915.modeset, int, 0400);
@@ -173,3 +174,7 @@
MODULE_PARM_DESC(mmio_debug,
"Enable the MMIO debug code (default: false). This may negatively "
"affect performance.");
+
+module_param_named(force_backlight_pmic, i915.force_backlight_pmic, bool, 0600);
+MODULE_PARM_DESC(force_backlight_pmic,
+ "Force backlight adjusting through pmic (default: false).");
diff -ur old/drivers/gpu/drm/i915/intel_dsi.c linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/gpu/drm/i915/intel_dsi.c
--- old/drivers/gpu/drm/i915/intel_dsi.c 2014-11-24 16:07:51.590050297 -0800
+++ linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/gpu/drm/i915/intel_dsi.c 2014-11-24 16:08:14.207281155 -0800
@@ -140,6 +140,8 @@
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
+ struct intel_connector *intel_connector =
+ &intel_dsi->attached_connector->base;
int pipe = intel_crtc->pipe;
u32 temp;
@@ -163,6 +165,8 @@
I915_WRITE(MIPI_PORT_CTRL(pipe), temp | DPI_ENABLE);
POSTING_READ(MIPI_PORT_CTRL(pipe));
}
+
+ intel_panel_enable_backlight(intel_connector);
}
static void intel_dsi_pre_enable(struct intel_encoder *encoder)
@@ -237,6 +241,8 @@
struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
+ struct intel_connector *intel_connector =
+ &intel_dsi->attached_connector->base;
int pipe = intel_crtc->pipe;
u32 temp;
@@ -253,6 +259,8 @@
msleep(2);
}
+ intel_panel_disable_backlight(intel_connector);
+
/* Panel commands can be sent when clock is in LP11 */
I915_WRITE(MIPI_DEVICE_READY(pipe), 0x0);
@@ -670,6 +678,7 @@
DRM_DEBUG_KMS("\n");
intel_panel_fini(&intel_connector->panel);
+ intel_panel_destroy_backlight(connector);
drm_connector_cleanup(connector);
kfree(connector);
}
@@ -786,6 +795,7 @@
fixed_mode->type |= DRM_MODE_TYPE_PREFERRED;
intel_panel_init(&intel_connector->panel, fixed_mode, NULL);
+ intel_panel_setup_backlight(connector);
return;
diff -ur old/drivers/gpu/drm/i915/intel_panel.c linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/gpu/drm/i915/intel_panel.c
--- old/drivers/gpu/drm/i915/intel_panel.c 2014-11-24 16:07:51.590050297 -0800
+++ linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/gpu/drm/i915/intel_panel.c 2014-11-24 16:08:28.200423985 -0800
@@ -31,6 +31,7 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/moduleparam.h>
+#include <linux/mfd/intel_soc_pmic.h>
#include "intel_drv.h"
void
@@ -532,6 +533,11 @@
return _vlv_get_backlight(dev, pipe);
}
+static u32 vlv_pmic_get_backlight(struct intel_connector *connector)
+{
+ return intel_soc_pmic_readb(0x4E);
+}
+
static u32 intel_panel_get_backlight(struct intel_connector *connector)
{
struct drm_device *dev = connector->base.dev;
@@ -607,6 +613,11 @@
I915_WRITE(VLV_BLC_PWM_CTL(pipe), tmp | level);
}
+static void vlv_pmic_set_backlight(struct intel_connector *connector, u32 level)
+{
+ intel_soc_pmic_writeb(0x4E, level);
+}
+
static void
intel_panel_actually_set_backlight(struct intel_connector *connector, u32 level)
{
@@ -726,6 +737,14 @@
I915_WRITE(VLV_BLC_PWM_CTL2(pipe), tmp & ~BLM_PWM_ENABLE);
}
+static void vlv_pmic_disable_backlight(struct intel_connector *connector)
+{
+ intel_panel_actually_set_backlight(connector, 0);
+
+ intel_soc_pmic_writeb(0x51, 0x00);
+ intel_soc_pmic_writeb(0x4B, 0x7F);
+}
+
void intel_panel_disable_backlight(struct intel_connector *connector)
{
struct drm_device *dev = connector->base.dev;
@@ -930,6 +949,17 @@
I915_WRITE(VLV_BLC_PWM_CTL2(pipe), ctl2 | BLM_PWM_ENABLE);
}
+static void vlv_pmic_enable_backlight(struct intel_connector *connector)
+{
+ struct intel_panel *panel = &connector->panel;
+
+ intel_soc_pmic_writeb(0x4B, 0xFF);
+ intel_soc_pmic_writeb(0x4E, 0xFF);
+ intel_soc_pmic_writeb(0x51, 0x01);
+
+ intel_panel_actually_set_backlight(connector, panel->backlight.level);
+}
+
void intel_panel_enable_backlight(struct intel_connector *connector)
{
struct drm_device *dev = connector->base.dev;
@@ -1273,6 +1303,20 @@
return 0;
}
+static int vlv_pmic_setup_backlight(struct intel_connector *connector)
+{
+ struct intel_panel *panel = &connector->panel;
+
+ printk("vlv_pmic_setup_backlight\n");
+ panel->backlight.present = 1;
+ panel->backlight.min = 0x00;
+ panel->backlight.max = 0xFF;
+ panel->backlight.level = 20;
+ panel->backlight.enabled = 1;
+
+ return 0;
+}
+
int intel_panel_setup_backlight(struct drm_connector *connector)
{
struct drm_device *dev = connector->dev;
@@ -1342,11 +1386,19 @@
dev_priv->display.set_backlight = pch_set_backlight;
dev_priv->display.get_backlight = pch_get_backlight;
} else if (IS_VALLEYVIEW(dev)) {
- dev_priv->display.setup_backlight = vlv_setup_backlight;
- dev_priv->display.enable_backlight = vlv_enable_backlight;
- dev_priv->display.disable_backlight = vlv_disable_backlight;
- dev_priv->display.set_backlight = vlv_set_backlight;
- dev_priv->display.get_backlight = vlv_get_backlight;
+ if (i915.force_backlight_pmic) {
+ dev_priv->display.setup_backlight = vlv_pmic_setup_backlight;
+ dev_priv->display.enable_backlight = vlv_pmic_enable_backlight;
+ dev_priv->display.disable_backlight = vlv_pmic_disable_backlight;
+ dev_priv->display.set_backlight = vlv_pmic_set_backlight;
+ dev_priv->display.get_backlight = vlv_pmic_get_backlight;
+ } else {
+ dev_priv->display.setup_backlight = vlv_setup_backlight;
+ dev_priv->display.enable_backlight = vlv_enable_backlight;
+ dev_priv->display.disable_backlight = vlv_disable_backlight;
+ dev_priv->display.set_backlight = vlv_set_backlight;
+ dev_priv->display.get_backlight = vlv_get_backlight;
+ }
} else if (IS_GEN4(dev)) {
dev_priv->display.setup_backlight = i965_setup_backlight;
dev_priv->display.enable_backlight = i965_enable_backlight;
diff -ur old/drivers/mfd/intel_soc_pmic_core.c linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/mfd/intel_soc_pmic_core.c
--- old/drivers/mfd/intel_soc_pmic_core.c 2014-11-24 16:07:51.844052890 -0800
+++ linux-3.18.0-0.rc6.git0.1.1awb.x86_64/drivers/mfd/intel_soc_pmic_core.c 2014-11-24 16:08:14.207281155 -0800
@@ -26,6 +26,8 @@
#include <linux/mfd/intel_soc_pmic.h>
#include "intel_soc_pmic_core.h"
+static struct intel_soc_pmic *pmic_hack = NULL;
+
/*
* On some boards the PMIC interrupt may come from a GPIO line.
* Try to lookup the ACPI table and see if such connection exists. If not,
@@ -64,6 +66,7 @@
config = (struct intel_soc_pmic_config *)id->driver_data;
pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL);
+ pmic_hack = pmic;
dev_set_drvdata(dev, pmic);
pmic->regmap = devm_regmap_init_i2c(i2c, config->regmap_config);
@@ -135,6 +138,38 @@
}
#endif
+int intel_soc_pmic_readb(int reg)
+{
+ int ret;
+ unsigned int val;
+
+ if (!pmic_hack) {
+ ret = -EIO;
+ } else {
+ ret = regmap_read(pmic_hack->regmap, reg, &val);
+ if (!ret) {
+ ret = val;
+ }
+ }
+
+ return ret;
+}
+EXPORT_SYMBOL(intel_soc_pmic_readb);
+
+int intel_soc_pmic_writeb(int reg, u8 val)
+{
+ int ret;
+
+ if (!pmic_hack) {
+ ret = -EIO;
+ } else {
+ ret = regmap_write(pmic_hack->regmap, reg, val);
+ }
+ return ret;
+}
+EXPORT_SYMBOL(intel_soc_pmic_writeb);
+
+
static SIMPLE_DEV_PM_OPS(intel_soc_pmic_pm_ops, intel_soc_pmic_suspend,
intel_soc_pmic_resume);
diff -ur old/include/linux/mfd/intel_soc_pmic.h linux-3.18.0-0.rc6.git0.1.1awb.x86_64/include/linux/mfd/intel_soc_pmic.h
--- old/include/linux/mfd/intel_soc_pmic.h 2014-11-24 16:07:46.912002548 -0800
+++ linux-3.18.0-0.rc6.git0.1.1awb.x86_64/include/linux/mfd/intel_soc_pmic.h 2014-11-24 16:08:14.207281155 -0800
@@ -27,4 +27,8 @@
struct regmap_irq_chip_data *irq_chip_data;
};
+int intel_soc_pmic_readb(int reg);
+int intel_soc_pmic_writeb(int reg, u8 val);
+
+
#endif /* __INTEL_SOC_PMIC_H__ */

View File

@ -2312,9 +2312,6 @@ CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_KXTJ9=m
# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
# Baytrail buttons
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
#
# Character devices
#
@ -5123,7 +5120,7 @@ CONFIG_ZSMALLOC=y
# CONFIG_PGTABLE_MAPPING is not set
# CONFIG_MDIO_GPIO is not set
CONFIG_KEYBOARD_GPIO=m
# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_KEYBOARD_GPIO_POLLED is not set
# CONFIG_MOUSE_GPIO is not set
# CONFIG_I2C_DESIGNWARE_PLATFORM is not set

View File

@ -190,90 +190,6 @@ CONFIG_EDAC_IE31200=m
CONFIG_SCHED_MC=y
CONFIG_SND_ISA=y
CONFIG_SND_ES18XX=m
# Baytrail sound
CONFIG_PWM_LPSS=m
CONFIG_SND_SOC=m
CONFIG_SND_SIMPLE_CARD=m
CONFIG_SND_DESIGNWARE_I2S=m
CONFIG_SND_ATMEL_SOC=m
CONFIG_SND_SOC_INTEL_SST=m
CONFIG_SND_SOC_INTEL_SST_ACPI=m
CONFIG_SND_SOC_INTEL_HASWELL_MACH=m
CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m
CONFIG_SND_SOC_INTEL_BAYTRAIL=m
CONFIG_SND_SOC_RT286=m
CONFIG_SND_SOC_RT5640=m
CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m
CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m
# no no no
# CONFIG_SND_SOC_ADAU1701 is not set
# CONFIG_SND_SOC_AK4554 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_CS42L52 is not set
# CONFIG_SND_SOC_CS42L73 is not set
# CONFIG_SND_SOC_CS4270 is not set
# CONFIG_SND_SOC_CS4271 is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
# CONFIG_SND_SOC_HDMI_CODEC is not set
# CONFIG_SND_SOC_PCM1681 is not set
# CONFIG_SND_SOC_PCM512x_I2C is not set
# CONFIG_SND_SOC_SGTL5000 is not set
# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
# CONFIG_SND_SOC_SPDIF is not set
# CONFIG_SND_SOC_TAS5086 is not set
# CONFIG_SND_SOC_TLV320AIC3X is not set
# CONFIG_SND_SOC_WM8510 is not set
# CONFIG_SND_SOC_WM8523 is not set
# CONFIG_SND_SOC_WM8580 is not set
# CONFIG_SND_SOC_WM8711 is not set
# CONFIG_SND_SOC_WM8728 is not set
# CONFIG_SND_SOC_WM8731 is not set
# CONFIG_SND_SOC_WM8737 is not set
# CONFIG_SND_SOC_WM8741 is not set
# CONFIG_SND_SOC_WM8750 is not set
# CONFIG_SND_SOC_WM8753 is not set
# CONFIG_SND_SOC_WM8776 is not set
# CONFIG_SND_SOC_WM8804 is not set
# CONFIG_SND_SOC_WM8903 is not set
# CONFIG_SND_SOC_WM8962 is not set
# CONFIG_SND_SOC_TPA6130A2 is not set
# CONFIG_SND_SOC_FSL_SAI is not set
# CONFIG_SND_SOC_FSL_SSI is not set
# CONFIG_SND_SOC_FSL_SPDIF is not set
# CONFIG_SND_SOC_FSL_ESAI is not set
# CONFIG_SND_SOC_IMX_AUDMUX is not set
# CONFIG_SND_SOC_ALC5623 is not set
# CONFIG_SND_SOC_CS42L56 is not set
# CONFIG_SND_SOC_STA350 is not set
# CONFIG_SND_SOC_FSL_ASRC is not set
# CONFIG_SND_SOC_AK4104 is not set
# CONFIG_SND_SOC_CS4265 is not set
# CONFIG_SND_SOC_PCM1792A is not set
# CONFIG_SND_SOC_PCM512x_SPI is not set
# CONFIG_SND_SOC_TAS2552 is not set
# CONFIG_SND_SOC_TLV320AIC31XX is not set
# CONFIG_SND_SOC_WM8770 is not set
# CONFIG_SND_SOC_CS35L32 is not set
# CONFIG_SND_SOC_ES8328 is not set
# CONFIG_SND_SOC_SSM2602_I2C is not set
# CONFIG_SND_SOC_SSM4567 is not set
# CONFIG_SND_SOC_WM8978 is not set
# Baytrail other (from pbrobinson)
CONFIG_INTEL_SOC_PMIC=y
CONFIG_GPIO_CRYSTAL_COVE=m
CONFIG_MFD_CORE=m
CONFIG_REGMAP_I2C=m
# https://lkml.org/lkml/2013/5/13/175
CONFIG_SPI_PXA2XX=m
CONFIG_SPI_PXA2XX_PCI=m
CONFIG_TCG_INFINEON=m
CONFIG_HW_RANDOM_INTEL=m

View File

@ -24,8 +24,7 @@ Summary: The Linux kernel
%global zipsed -e 's/\.ko$/\.ko.xz/'
%endif
%global dist awb
%define buildid .1
# % define buildid .local
# baserelease defines which build revision of this kernel version we're
# building. We used to call this fedora_build, but the magical name
@ -619,38 +618,6 @@ Patch26071: usb-quirks-Add-reset-resume-quirk-for-MS-Wireless-La.patch
# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel
Patch30000: kernel-arm64.patch
# END OF FEDORA PATCH DEFINITIONS
# AWB PATCH DEFINITIONS (BAYTRAIL)
# https://patchwork.kernel.org/patch/5161621/(minor rediff required)
# https://bugzilla.kernel.org/show_bug.cgi?id=69011
# Fixes battery status
Patch31010: V2-ACPI-Add-_DEP-Operation-Region-Dependencies-support-to-fix-battery-issue-on-the-Asus-T100TA.patch
# Add SDIO ID for the V8P wireless adapter to ath6kl driver
Patch31011: support-Dell-OEM-chipset-found-in-Venue-8-Pro-SDIO-I.patch
# Map 'Home' button on Venue 8 Pro to left meta key (i.e. "Start")
# from Jan-Michael Brummer
Patch31012: soc_button_use_leftmeta.patch
# Enable mic on RT5640 (i.e. lots of Baytrail hardware, we hope)
# from Jan-Michael Brummer
Patch31013: rt5640_enable_mic.patch
# Fix wifi on V8P(?) from Jan-Michael Brummer
Patch31014: sdhci-pm.patch
# https://bugs.freedesktop.org/show_bug.cgi?id=85977
# Hacky implementation of backlight support for (at least) Dell Venue 8 Pro
# This is the patch attached to the bug plus a further change sent by email
# by J-M which makes the hack optional, enabled only if
# i915.force_backlight_pmic=1 is passed on the cmdline
Patch31015: baytrail-backlight.patch
# END OF AWB PATCH DEFINITIONS
# END OF PATCH DEFINITIONS
%endif
@ -1379,18 +1346,6 @@ ApplyPatch kernel-arm64.patch -R
%endif
%endif
# END OF FEDORA PATCH APPLICATIONS
# AWB (BAYTRAIL) PATCH APPLICATIONS
ApplyPatch V2-ACPI-Add-_DEP-Operation-Region-Dependencies-support-to-fix-battery-issue-on-the-Asus-T100TA.patch
ApplyPatch support-Dell-OEM-chipset-found-in-Venue-8-Pro-SDIO-I.patch
#ApplyPatch rt5640_enable_mic.patch
ApplyPatch soc_button_use_leftmeta.patch
ApplyPatch sdhci-pm.patch
ApplyPatch baytrail-backlight.patch
# END OF AWB (BAYTRAIL) PATCH APPLICATIONS
# END OF PATCH APPLICATIONS
%endif
@ -2243,12 +2198,12 @@ fi
#
#
# ___________________________________________________________
# / This branch is for Fedora 21. You probably want to commit \
# _____ ____ _ \ to the F-20 branch instead, or in addition to this one. /
# | ___|___ \/ | -----------------------------------------------------------
# | |_ __) | | \ ^__^
# | _| / __/| | \ (@@)\_______
# |_| |_____|_| (__)\ )\/\
# / This branch is for Fedora 22. You probably want to commit \
# _____ ____ ____ \ to the f21 branch instead, or in addition to this one. /
# | ___|___ \|___ \ -----------------------------------------------------------
# | |_ __) | __) | \ ^__^
# | _| / __/ / __/ \ (@@)\_______
# |_| |_____|_____| (__)\ )\/\
# ||----w |
# || ||
%changelog

View File

@ -1,13 +0,0 @@
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index f1ec6e6..e7e480d 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -2195,6 +2195,7 @@ static int rt5640_i2c_probe(struct i2c_client *i2c,
regmap_update_bits(rt5640->regmap, RT5640_IN3_IN4,
RT5640_IN_DF2, RT5640_IN_DF2);
+ rt5640->pdata.dmic_en = 1;
if (rt5640->pdata.dmic_en) {
regmap_update_bits(rt5640->regmap, RT5640_GPIO_CTRL1,
RT5640_GP2_PIN_MASK, RT5640_GP2_PIN_DMIC1_SCL);

View File

@ -1,25 +0,0 @@
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index ada1a3e..306b4ac 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1715,7 +1715,8 @@ static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
struct sdhci_host *host = mmc_priv(mmc);
unsigned long flags;
- sdhci_runtime_pm_get(host);
+ if (enable)
+ sdhci_runtime_pm_get(host);
spin_lock_irqsave(&host->lock, flags);
if (enable)
@@ -1726,7 +1727,8 @@ static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
sdhci_enable_sdio_irq_nolock(host, enable);
spin_unlock_irqrestore(&host->lock, flags);
- sdhci_runtime_pm_put(host);
+ if (!enable)
+ sdhci_runtime_pm_put(host);
}
static int sdhci_do_start_signal_voltage_switch(struct sdhci_host *host,

View File

@ -1,14 +0,0 @@
diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
index e34dfc2..0472e3a 100644
--- a/drivers/input/misc/soc_button_array.c
+++ b/drivers/input/misc/soc_button_array.c
@@ -185,7 +185,7 @@ static int soc_button_pnp_probe(struct pnp_dev *pdev,
static struct soc_button_info soc_button_PNP0C40[] = {
{ "power", 0, EV_KEY, KEY_POWER, false, true },
- { "home", 1, EV_KEY, KEY_HOME, false, true },
+ { "home", 1, EV_KEY, KEY_LEFTMETA, false, true },
{ "volume_up", 2, EV_KEY, KEY_VOLUMEUP, true, false },
{ "volume_down", 3, EV_KEY, KEY_VOLUMEDOWN, true, false },
{ "rotation_lock", 4, EV_SW, SW_ROTATE_LOCK, false, false },

View File

@ -1,25 +0,0 @@
From da8b582fd0bf505d269d5d9e69f1607ea69d1d33 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Tue, 9 Sep 2014 17:26:15 -0700
Subject: [PATCH] support Dell OEM chipset found in Venue 8 Pro (SDIO ID
0271:0418)
---
drivers/net/wireless/ath/ath6kl/sdio.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/ath/ath6kl/sdio.c b/drivers/net/wireless/ath/ath6kl/sdio.c
index 339d89f..5384f14 100644
--- a/drivers/net/wireless/ath/ath6kl/sdio.c
+++ b/drivers/net/wireless/ath/ath6kl/sdio.c
@@ -1401,6 +1401,7 @@ static const struct sdio_device_id ath6kl_sdio_devices[] = {
{SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_AR6004_BASE | 0x0))},
{SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_AR6004_BASE | 0x1))},
{SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_AR6004_BASE | 0x2))},
+ {SDIO_DEVICE(MANUFACTURER_CODE, (MANUFACTURER_ID_AR6004_BASE | 0x18))},
{},
};
--
2.1.0