mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
Merge branches 'acpica', 'battery', 'boot-irqs', 'bz-24492', 'bz-9528', 'from-akpm', 'kexec-param' and 'misc' into release
Conflicts: Documentation/kernel-parameters.txt Signed-off-by: Len Brown <[email protected]>
This commit is contained in:
commit
4a8f5058bd
157 changed files with 1471 additions and 744 deletions
|
|
@ -139,13 +139,23 @@ static int __init hest_parse_ghes(struct acpi_hest_header *hest_hdr, void *data)
|
|||
{
|
||||
struct platform_device *ghes_dev;
|
||||
struct ghes_arr *ghes_arr = data;
|
||||
int rc;
|
||||
int rc, i;
|
||||
|
||||
if (hest_hdr->type != ACPI_HEST_TYPE_GENERIC_ERROR)
|
||||
return 0;
|
||||
|
||||
if (!((struct acpi_hest_generic *)hest_hdr)->enabled)
|
||||
return 0;
|
||||
for (i = 0; i < ghes_arr->count; i++) {
|
||||
struct acpi_hest_header *hdr;
|
||||
ghes_dev = ghes_arr->ghes_devs[i];
|
||||
hdr = *(struct acpi_hest_header **)ghes_dev->dev.platform_data;
|
||||
if (hdr->source_id == hest_hdr->source_id) {
|
||||
pr_warning(FW_WARN HEST_PFX "Duplicated hardware error source ID: %d.\n",
|
||||
hdr->source_id);
|
||||
return -EIO;
|
||||
}
|
||||
}
|
||||
ghes_dev = platform_device_alloc("GHES", hest_hdr->source_id);
|
||||
if (!ghes_dev)
|
||||
return -ENOMEM;
|
||||
|
|
|
|||
|
|
@ -55,6 +55,9 @@
|
|||
#define ACPI_BATTERY_NOTIFY_INFO 0x81
|
||||
#define ACPI_BATTERY_NOTIFY_THRESHOLD 0x82
|
||||
|
||||
/* Battery power unit: 0 means mW, 1 means mA */
|
||||
#define ACPI_BATTERY_POWER_UNIT_MA 1
|
||||
|
||||
#define _COMPONENT ACPI_BATTERY_COMPONENT
|
||||
|
||||
ACPI_MODULE_NAME("battery");
|
||||
|
|
@ -91,11 +94,6 @@ MODULE_DEVICE_TABLE(acpi, battery_device_ids);
|
|||
enum {
|
||||
ACPI_BATTERY_ALARM_PRESENT,
|
||||
ACPI_BATTERY_XINFO_PRESENT,
|
||||
/* For buggy DSDTs that report negative 16-bit values for either
|
||||
* charging or discharging current and/or report 0 as 65536
|
||||
* due to bad math.
|
||||
*/
|
||||
ACPI_BATTERY_QUIRK_SIGNED16_CURRENT,
|
||||
ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY,
|
||||
};
|
||||
|
||||
|
|
@ -301,7 +299,8 @@ static enum power_supply_property energy_battery_props[] = {
|
|||
#ifdef CONFIG_ACPI_PROCFS_POWER
|
||||
inline char *acpi_battery_units(struct acpi_battery *battery)
|
||||
{
|
||||
return (battery->power_unit)?"mA":"mW";
|
||||
return (battery->power_unit == ACPI_BATTERY_POWER_UNIT_MA) ?
|
||||
"mA" : "mW";
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -461,9 +460,17 @@ static int acpi_battery_get_state(struct acpi_battery *battery)
|
|||
battery->update_time = jiffies;
|
||||
kfree(buffer.pointer);
|
||||
|
||||
if (test_bit(ACPI_BATTERY_QUIRK_SIGNED16_CURRENT, &battery->flags) &&
|
||||
battery->rate_now != -1)
|
||||
/* For buggy DSDTs that report negative 16-bit values for either
|
||||
* charging or discharging current and/or report 0 as 65536
|
||||
* due to bad math.
|
||||
*/
|
||||
if (battery->power_unit == ACPI_BATTERY_POWER_UNIT_MA &&
|
||||
battery->rate_now != ACPI_BATTERY_VALUE_UNKNOWN &&
|
||||
(s16)(battery->rate_now) < 0) {
|
||||
battery->rate_now = abs((s16)battery->rate_now);
|
||||
printk_once(KERN_WARNING FW_BUG "battery: (dis)charge rate"
|
||||
" invalid.\n");
|
||||
}
|
||||
|
||||
if (test_bit(ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, &battery->flags)
|
||||
&& battery->capacity_now >= 0 && battery->capacity_now <= 100)
|
||||
|
|
@ -544,7 +551,7 @@ static int sysfs_add_battery(struct acpi_battery *battery)
|
|||
{
|
||||
int result;
|
||||
|
||||
if (battery->power_unit) {
|
||||
if (battery->power_unit == ACPI_BATTERY_POWER_UNIT_MA) {
|
||||
battery->bat.properties = charge_battery_props;
|
||||
battery->bat.num_properties =
|
||||
ARRAY_SIZE(charge_battery_props);
|
||||
|
|
@ -566,18 +573,16 @@ static int sysfs_add_battery(struct acpi_battery *battery)
|
|||
|
||||
static void sysfs_remove_battery(struct acpi_battery *battery)
|
||||
{
|
||||
if (!battery->bat.dev)
|
||||
mutex_lock(&battery->lock);
|
||||
if (!battery->bat.dev) {
|
||||
mutex_unlock(&battery->lock);
|
||||
return;
|
||||
}
|
||||
|
||||
device_remove_file(battery->bat.dev, &alarm_attr);
|
||||
power_supply_unregister(&battery->bat);
|
||||
battery->bat.dev = NULL;
|
||||
}
|
||||
|
||||
static void acpi_battery_quirks(struct acpi_battery *battery)
|
||||
{
|
||||
if (dmi_name_in_vendors("Acer") && battery->power_unit) {
|
||||
set_bit(ACPI_BATTERY_QUIRK_SIGNED16_CURRENT, &battery->flags);
|
||||
}
|
||||
mutex_unlock(&battery->lock);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -592,7 +597,7 @@ static void acpi_battery_quirks(struct acpi_battery *battery)
|
|||
*
|
||||
* Handle this correctly so that they won't break userspace.
|
||||
*/
|
||||
static void acpi_battery_quirks2(struct acpi_battery *battery)
|
||||
static void acpi_battery_quirks(struct acpi_battery *battery)
|
||||
{
|
||||
if (test_bit(ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, &battery->flags))
|
||||
return ;
|
||||
|
|
@ -623,13 +628,15 @@ static int acpi_battery_update(struct acpi_battery *battery)
|
|||
result = acpi_battery_get_info(battery);
|
||||
if (result)
|
||||
return result;
|
||||
acpi_battery_quirks(battery);
|
||||
acpi_battery_init_alarm(battery);
|
||||
}
|
||||
if (!battery->bat.dev)
|
||||
sysfs_add_battery(battery);
|
||||
if (!battery->bat.dev) {
|
||||
result = sysfs_add_battery(battery);
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
result = acpi_battery_get_state(battery);
|
||||
acpi_battery_quirks2(battery);
|
||||
acpi_battery_quirks(battery);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -863,7 +870,7 @@ DECLARE_FILE_FUNCTIONS(alarm);
|
|||
}, \
|
||||
}
|
||||
|
||||
static struct battery_file {
|
||||
static const struct battery_file {
|
||||
struct file_operations ops;
|
||||
mode_t mode;
|
||||
const char *name;
|
||||
|
|
@ -948,9 +955,12 @@ static int battery_notify(struct notifier_block *nb,
|
|||
struct acpi_battery *battery = container_of(nb, struct acpi_battery,
|
||||
pm_nb);
|
||||
switch (mode) {
|
||||
case PM_POST_HIBERNATION:
|
||||
case PM_POST_SUSPEND:
|
||||
sysfs_remove_battery(battery);
|
||||
sysfs_add_battery(battery);
|
||||
if (battery->bat.dev) {
|
||||
sysfs_remove_battery(battery);
|
||||
sysfs_add_battery(battery);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -975,25 +985,33 @@ static int acpi_battery_add(struct acpi_device *device)
|
|||
if (ACPI_SUCCESS(acpi_get_handle(battery->device->handle,
|
||||
"_BIX", &handle)))
|
||||
set_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags);
|
||||
acpi_battery_update(battery);
|
||||
result = acpi_battery_update(battery);
|
||||
if (result)
|
||||
goto fail;
|
||||
#ifdef CONFIG_ACPI_PROCFS_POWER
|
||||
result = acpi_battery_add_fs(device);
|
||||
#endif
|
||||
if (!result) {
|
||||
printk(KERN_INFO PREFIX "%s Slot [%s] (battery %s)\n",
|
||||
ACPI_BATTERY_DEVICE_NAME, acpi_device_bid(device),
|
||||
device->status.battery_present ? "present" : "absent");
|
||||
} else {
|
||||
if (result) {
|
||||
#ifdef CONFIG_ACPI_PROCFS_POWER
|
||||
acpi_battery_remove_fs(device);
|
||||
#endif
|
||||
kfree(battery);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
printk(KERN_INFO PREFIX "%s Slot [%s] (battery %s)\n",
|
||||
ACPI_BATTERY_DEVICE_NAME, acpi_device_bid(device),
|
||||
device->status.battery_present ? "present" : "absent");
|
||||
|
||||
battery->pm_nb.notifier_call = battery_notify;
|
||||
register_pm_notifier(&battery->pm_nb);
|
||||
|
||||
return result;
|
||||
|
||||
fail:
|
||||
sysfs_remove_battery(battery);
|
||||
mutex_destroy(&battery->lock);
|
||||
kfree(battery);
|
||||
return result;
|
||||
}
|
||||
|
||||
static int acpi_battery_remove(struct acpi_device *device, int type)
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ struct dock_dependent_device {
|
|||
struct list_head list;
|
||||
struct list_head hotplug_list;
|
||||
acpi_handle handle;
|
||||
struct acpi_dock_ops *ops;
|
||||
const struct acpi_dock_ops *ops;
|
||||
void *context;
|
||||
};
|
||||
|
||||
|
|
@ -589,7 +589,7 @@ EXPORT_SYMBOL_GPL(unregister_dock_notifier);
|
|||
* the dock driver after _DCK is executed.
|
||||
*/
|
||||
int
|
||||
register_hotplug_dock_device(acpi_handle handle, struct acpi_dock_ops *ops,
|
||||
register_hotplug_dock_device(acpi_handle handle, const struct acpi_dock_ops *ops,
|
||||
void *context)
|
||||
{
|
||||
struct dock_dependent_device *dd;
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ static ssize_t acpi_ec_write_io(struct file *f, const char __user *buf,
|
|||
return count;
|
||||
}
|
||||
|
||||
static struct file_operations acpi_ec_io_ops = {
|
||||
static const struct file_operations acpi_ec_io_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = acpi_ec_open_io,
|
||||
.read = acpi_ec_read_io,
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ fan_set_cur_state(struct thermal_cooling_device *cdev, unsigned long state)
|
|||
return result;
|
||||
}
|
||||
|
||||
static struct thermal_cooling_device_ops fan_cooling_ops = {
|
||||
static const struct thermal_cooling_device_ops fan_cooling_ops = {
|
||||
.get_max_state = fan_get_max_state,
|
||||
.get_cur_state = fan_get_cur_state,
|
||||
.set_cur_state = fan_set_cur_state,
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ static u32 acpi_osi_handler(acpi_string interface, u32 supported)
|
|||
{
|
||||
if (!strcmp("Linux", interface)) {
|
||||
|
||||
printk(KERN_NOTICE FW_BUG PREFIX
|
||||
printk_once(KERN_NOTICE FW_BUG PREFIX
|
||||
"BIOS _OSI(Linux) query %s%s\n",
|
||||
osi_linux.enable ? "honored" : "ignored",
|
||||
osi_linux.cmdline ? " via cmdline" :
|
||||
|
|
@ -237,8 +237,23 @@ void acpi_os_vprintf(const char *fmt, va_list args)
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KEXEC
|
||||
static unsigned long acpi_rsdp;
|
||||
static int __init setup_acpi_rsdp(char *arg)
|
||||
{
|
||||
acpi_rsdp = simple_strtoul(arg, NULL, 16);
|
||||
return 0;
|
||||
}
|
||||
early_param("acpi_rsdp", setup_acpi_rsdp);
|
||||
#endif
|
||||
|
||||
acpi_physical_address __init acpi_os_get_root_pointer(void)
|
||||
{
|
||||
#ifdef CONFIG_KEXEC
|
||||
if (acpi_rsdp)
|
||||
return acpi_rsdp;
|
||||
#endif
|
||||
|
||||
if (efi_enabled) {
|
||||
if (efi.acpi20 != EFI_INVALID_TABLE_ADDR)
|
||||
return efi.acpi20;
|
||||
|
|
@ -1083,7 +1098,13 @@ struct osi_setup_entry {
|
|||
bool enable;
|
||||
};
|
||||
|
||||
static struct osi_setup_entry __initdata osi_setup_entries[OSI_STRING_ENTRIES_MAX];
|
||||
static struct osi_setup_entry __initdata
|
||||
osi_setup_entries[OSI_STRING_ENTRIES_MAX] = {
|
||||
{"Module Device", true},
|
||||
{"Processor Device", true},
|
||||
{"3.0 _SCP Extensions", true},
|
||||
{"Processor Aggregator Device", true},
|
||||
};
|
||||
|
||||
void __init acpi_osi_setup(char *str)
|
||||
{
|
||||
|
|
@ -1332,23 +1353,6 @@ int acpi_resources_are_enforced(void)
|
|||
}
|
||||
EXPORT_SYMBOL(acpi_resources_are_enforced);
|
||||
|
||||
/*
|
||||
* Create and initialize a spinlock.
|
||||
*/
|
||||
acpi_status
|
||||
acpi_os_create_lock(acpi_spinlock *out_handle)
|
||||
{
|
||||
spinlock_t *lock;
|
||||
|
||||
lock = ACPI_ALLOCATE(sizeof(spinlock_t));
|
||||
if (!lock)
|
||||
return AE_NO_MEMORY;
|
||||
spin_lock_init(lock);
|
||||
*out_handle = lock;
|
||||
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Deallocate the memory for a spinlock.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -303,6 +303,61 @@ void acpi_pci_irq_del_prt(struct pci_bus *bus)
|
|||
/* --------------------------------------------------------------------------
|
||||
PCI Interrupt Routing Support
|
||||
-------------------------------------------------------------------------- */
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
extern int noioapicquirk;
|
||||
extern int noioapicreroute;
|
||||
|
||||
static int bridge_has_boot_interrupt_variant(struct pci_bus *bus)
|
||||
{
|
||||
struct pci_bus *bus_it;
|
||||
|
||||
for (bus_it = bus ; bus_it ; bus_it = bus_it->parent) {
|
||||
if (!bus_it->self)
|
||||
return 0;
|
||||
if (bus_it->self->irq_reroute_variant)
|
||||
return bus_it->self->irq_reroute_variant;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Some chipsets (e.g. Intel 6700PXH) generate a legacy INTx when the IRQ
|
||||
* entry in the chipset's IO-APIC is masked (as, e.g. the RT kernel does
|
||||
* during interrupt handling). When this INTx generation cannot be disabled,
|
||||
* we reroute these interrupts to their legacy equivalent to get rid of
|
||||
* spurious interrupts.
|
||||
*/
|
||||
static int acpi_reroute_boot_interrupt(struct pci_dev *dev,
|
||||
struct acpi_prt_entry *entry)
|
||||
{
|
||||
if (noioapicquirk || noioapicreroute) {
|
||||
return 0;
|
||||
} else {
|
||||
switch (bridge_has_boot_interrupt_variant(dev->bus)) {
|
||||
case 0:
|
||||
/* no rerouting necessary */
|
||||
return 0;
|
||||
case INTEL_IRQ_REROUTE_VARIANT:
|
||||
/*
|
||||
* Remap according to INTx routing table in 6700PXH
|
||||
* specs, intel order number 302628-002, section
|
||||
* 2.15.2. Other chipsets (80332, ...) have the same
|
||||
* mapping and are handled here as well.
|
||||
*/
|
||||
dev_info(&dev->dev, "PCI IRQ %d -> rerouted to legacy "
|
||||
"IRQ %d\n", entry->index,
|
||||
(entry->index % 4) + 16);
|
||||
entry->index = (entry->index % 4) + 16;
|
||||
return 1;
|
||||
default:
|
||||
dev_warn(&dev->dev, "Cannot reroute IRQ %d to legacy "
|
||||
"IRQ: unknown mapping\n", entry->index);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_X86_IO_APIC */
|
||||
|
||||
static struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin)
|
||||
{
|
||||
struct acpi_prt_entry *entry;
|
||||
|
|
@ -311,6 +366,9 @@ static struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin)
|
|||
|
||||
entry = acpi_pci_irq_find_prt_entry(dev, pin);
|
||||
if (entry) {
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
acpi_reroute_boot_interrupt(dev, entry);
|
||||
#endif /* CONFIG_X86_IO_APIC */
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found %s[%c] _PRT entry\n",
|
||||
pci_name(dev), pin_name(pin)));
|
||||
return entry;
|
||||
|
|
|
|||
|
|
@ -485,7 +485,8 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
|
|||
root->secondary.end = 0xFF;
|
||||
printk(KERN_WARNING FW_BUG PREFIX
|
||||
"no secondary bus range in _CRS\n");
|
||||
status = acpi_evaluate_integer(device->handle, METHOD_NAME__BBN, NULL, &bus);
|
||||
status = acpi_evaluate_integer(device->handle, METHOD_NAME__BBN,
|
||||
NULL, &bus);
|
||||
if (ACPI_SUCCESS(status))
|
||||
root->secondary.start = bus;
|
||||
else if (status == AE_NOT_FOUND)
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ processor_set_cur_state(struct thermal_cooling_device *cdev,
|
|||
return result;
|
||||
}
|
||||
|
||||
struct thermal_cooling_device_ops processor_cooling_ops = {
|
||||
const struct thermal_cooling_device_ops processor_cooling_ops = {
|
||||
.get_max_state = processor_get_max_state,
|
||||
.get_cur_state = processor_get_cur_state,
|
||||
.set_cur_state = processor_set_cur_state,
|
||||
|
|
|
|||
|
|
@ -130,6 +130,9 @@ struct acpi_sbs {
|
|||
|
||||
#define to_acpi_sbs(x) container_of(x, struct acpi_sbs, charger)
|
||||
|
||||
static int acpi_sbs_remove(struct acpi_device *device, int type);
|
||||
static int acpi_battery_get_state(struct acpi_battery *battery);
|
||||
|
||||
static inline int battery_scale(int log)
|
||||
{
|
||||
int scale = 1;
|
||||
|
|
@ -195,6 +198,8 @@ static int acpi_sbs_battery_get_property(struct power_supply *psy,
|
|||
|
||||
if ((!battery->present) && psp != POWER_SUPPLY_PROP_PRESENT)
|
||||
return -ENODEV;
|
||||
|
||||
acpi_battery_get_state(battery);
|
||||
switch (psp) {
|
||||
case POWER_SUPPLY_PROP_STATUS:
|
||||
if (battery->rate_now < 0)
|
||||
|
|
@ -225,11 +230,17 @@ static int acpi_sbs_battery_get_property(struct power_supply *psy,
|
|||
case POWER_SUPPLY_PROP_POWER_NOW:
|
||||
val->intval = abs(battery->rate_now) *
|
||||
acpi_battery_ipscale(battery) * 1000;
|
||||
val->intval *= (acpi_battery_mode(battery)) ?
|
||||
(battery->voltage_now *
|
||||
acpi_battery_vscale(battery) / 1000) : 1;
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_CURRENT_AVG:
|
||||
case POWER_SUPPLY_PROP_POWER_AVG:
|
||||
val->intval = abs(battery->rate_avg) *
|
||||
acpi_battery_ipscale(battery) * 1000;
|
||||
val->intval *= (acpi_battery_mode(battery)) ?
|
||||
(battery->voltage_now *
|
||||
acpi_battery_vscale(battery) / 1000) : 1;
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_CAPACITY:
|
||||
val->intval = battery->state_of_charge;
|
||||
|
|
@ -903,8 +914,6 @@ static void acpi_sbs_callback(void *context)
|
|||
}
|
||||
}
|
||||
|
||||
static int acpi_sbs_remove(struct acpi_device *device, int type);
|
||||
|
||||
static int acpi_sbs_add(struct acpi_device *device)
|
||||
{
|
||||
struct acpi_sbs *sbs;
|
||||
|
|
|
|||
|
|
@ -428,6 +428,22 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
|
|||
DMI_MATCH(DMI_PRODUCT_NAME, "1000 Series"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.callback = init_old_suspend_ordering,
|
||||
.ident = "Asus A8N-SLI DELUXE",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI DELUXE"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.callback = init_old_suspend_ordering,
|
||||
.ident = "Asus A8N-SLI Premium",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI Premium"),
|
||||
},
|
||||
},
|
||||
{},
|
||||
};
|
||||
#endif /* CONFIG_SUSPEND */
|
||||
|
|
|
|||
|
|
@ -149,12 +149,12 @@ static int param_get_debug_level(char *buffer, const struct kernel_param *kp)
|
|||
return result;
|
||||
}
|
||||
|
||||
static struct kernel_param_ops param_ops_debug_layer = {
|
||||
static const struct kernel_param_ops param_ops_debug_layer = {
|
||||
.set = param_set_uint,
|
||||
.get = param_get_debug_layer,
|
||||
};
|
||||
|
||||
static struct kernel_param_ops param_ops_debug_level = {
|
||||
static const struct kernel_param_ops param_ops_debug_level = {
|
||||
.set = param_set_uint,
|
||||
.get = param_get_debug_level,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -812,7 +812,7 @@ acpi_thermal_unbind_cooling_device(struct thermal_zone_device *thermal,
|
|||
thermal_zone_unbind_cooling_device);
|
||||
}
|
||||
|
||||
static struct thermal_zone_device_ops acpi_thermal_zone_ops = {
|
||||
static const struct thermal_zone_device_ops acpi_thermal_zone_ops = {
|
||||
.bind = acpi_thermal_bind_cooling_device,
|
||||
.unbind = acpi_thermal_unbind_cooling_device,
|
||||
.get_temp = thermal_get_temp,
|
||||
|
|
|
|||
|
|
@ -308,7 +308,7 @@ video_set_cur_state(struct thermal_cooling_device *cooling_dev, unsigned long st
|
|||
return acpi_video_device_lcd_set_level(video, level);
|
||||
}
|
||||
|
||||
static struct thermal_cooling_device_ops video_cooling_ops = {
|
||||
static const struct thermal_cooling_device_ops video_cooling_ops = {
|
||||
.get_max_state = video_get_max_state,
|
||||
.get_cur_state = video_get_cur_state,
|
||||
.set_cur_state = video_set_cur_state,
|
||||
|
|
|
|||
Loading…
Reference in a new issue