Revert "Merge branch 'master' into baytrail"
This reverts commit7511bcf2e6
, reversing changes made tocd44fa829c
. 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:
parent
06ec1977a7
commit
96440958bc
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
@ -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__ */
|
@ -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
|
||||
|
@ -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
|
||||
|
59
kernel.spec
59
kernel.spec
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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 },
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user