* refs/heads/tmp-90aa475:
Linux 4.9.220
x86/vdso: Fix lsl operand order
x86/microcode/intel: replace sync_core() with native_cpuid_reg(eax)
x86/CPU: Add native CPUID variants returning a single datum
mtd: phram: fix a double free issue in error path
mtd: lpddr: Fix a double free in probe()
locktorture: Print ratio of acquisitions, not failures
tty: evh_bytechan: Fix out of bounds accesses
fbdev: potential information leak in do_fb_ioctl()
iommu/amd: Fix the configuration of GCR3 table root pointer
libnvdimm: Out of bounds read in __nd_ioctl()
ext2: fix debug reference to ext2_xattr_cache
ext2: fix empty body warnings when -Wextra is used
NFS: Fix memory leaks in nfs_pageio_stop_mirroring()
KVM: s390: vsie: Fix possible race when shadowing region 3 tables
compiler.h: fix error in BUILD_BUG_ON() reporting
percpu_counter: fix a data race at vm_committed_as
ext4: do not commit super on read-only bdev
powerpc/maple: Fix declaration made after definition
s390/cpuinfo: fix wrong output when CPU0 is offline
NFS: direct.c: Fix memory leak of dreq when nfs_get_lock_context fails
clk: tegra: Fix Tegra PMC clock out parents
power: supply: bq27xxx_battery: Silence deferred-probe error
clk: at91: usb: continue if clk_hw_round_rate() return zero
of: unittest: kmemleak in of_unittest_platform_populate()
arm64: cpu_errata: include required headers
of: fix missing kobject init for !SYSFS && OF_DYNAMIC config
soc: qcom: smem: Use le32_to_cpu for comparison
wil6210: fix length check in __wmi_send
rtc: pm8xxx: Fix issue in RTC write path
wil6210: rate limit wil_rx_refill error
scsi: ufs: ufs-qcom: remove broken hci version quirk
scsi: ufs: make sure all interrupts are processed
wil6210: fix temperature debugfs
wil6210: increase firmware ready timeout
Revert "gpio: set up initial state from .get_direction()"
drm: NULL pointer dereference [null-pointer-deref] (CWE 476) problem
video: fbdev: sis: Remove unnecessary parentheses and commented code
ALSA: hda: Don't release card at firmware loading error
scsi: sg: add sg_remove_request in sg_common_write
objtool: Fix switch table detection in .text.unlikely
tracing: Fix the race between registering 'snapshot' event trigger and triggering 'snapshot' operation
scsi: target: fix hang when multiple threads try to destroy the same iscsi session
scsi: target: remove boilerplate code
kvm: x86: Host feature SSBD doesn't imply guest feature SPEC_CTRL_SSBD
dm flakey: check for null arg_name in parse_features()
ext4: do not zeroout extents beyond i_disksize
mac80211_hwsim: Use kstrndup() in place of kasprintf()
btrfs: check commit root generation in should_ignore_root
ALSA: usb-audio: Don't override ignore_ctl_error value from the map
ASoC: Intel: mrfld: return error codes when an error occurs
ASoC: Intel: mrfld: fix incorrect check on p->sink
ext4: fix incorrect inodes per group in error message
ext4: fix incorrect group count in ext4_fill_super error message
jbd2: improve comments about freeing data buffers whose page mapping is NULL
scsi: ufs: Fix ufshcd_hold() caused scheduling while atomic
net: ipv6: do not consider routes via gateways for anycast address check
net: qrtr: send msgs from local of same id as broadcast
net: ipv4: devinet: Fix crash when add/del multicast IP with autojoin
hsr: check protocol version in hsr_newlink()
mfd: dln2: Fix sanity checking for endpoints
misc: echo: Remove unnecessary parentheses and simplify check for zero
powerpc/fsl_booke: Avoid creating duplicate tlb1 entry
ipmi: fix hung processes in __get_guid()
drm: Remove PageReserved manipulation from drm_pci_alloc
drm/dp_mst: Fix clearing payload state on topology disable
Btrfs: fix crash during unmount due to race with delayed inode workers
powerpc/64/tm: Don't let userspace set regs->trap via sigreturn
libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set
hfsplus: fix crash and filesystem corruption when deleting files
cpufreq: powernv: Fix use-after-free
kmod: make request_module() return an error when autoloading is disabled
Input: i8042 - add Acer Aspire 5738z to nomux list
s390/diag: fix display of diagnose call statistics
ocfs2: no need try to truncate file beyond i_size
ext4: fix a data race at inode->i_blocks
rtc: omap: Use define directive for PIN_CONFIG_ACTIVE_HIGH
arm64: armv8_deprecated: Fix undef_hook mask for thumb setend
scsi: zfcp: fix missing erp_lock in port recovery trigger for point-to-point
dm verity fec: fix memory leak in verity_fec_dtr
mm: Use fixed constant in page_frag_alloc instead of size + 1
tools: gpio: Fix out-of-tree build regression
x86/speculation: Remove redundant arch_smt_update() invocation
ALSA: hda: Initialize power_state field properly
crypto: mxs-dcp - fix scatterlist linearization for hash
btrfs: drop block from cache on error in relocation
KVM: VMX: fix crash cleanup when KVM wasn't used
KVM: VMX: Always VMCLEAR in-use VMCSes during crash with kexec support
KVM: x86: Allocate new rmap and large page tracking when moving memslot
KVM: s390: vsie: Fix delivery of addressing exceptions
KVM: s390: vsie: Fix region 1 ASCE sanity shadow address checks
x86/entry/32: Add missing ASM_CLAC to general_protection entry
signal: Extend exec_id to 64bits
ath9k: Handle txpower changes even when TPC is disabled
MIPS: OCTEON: irq: Fix potential NULL pointer dereference
irqchip/versatile-fpga: Apply clear-mask earlier
KEYS: reaching the keys quotas correctly
thermal: devfreq_cooling: inline all stubs for CONFIG_DEVFREQ_THERMAL=n
acpi/x86: ignore unspecified bit positions in the ACPI global lock field
media: ti-vpe: cal: fix disable_irqs to only the intended target
ALSA: pcm: oss: Fix regression by buffer overflow fix
ALSA: ice1724: Fix invalid access for enumerated ctl items
ALSA: hda: Fix potential access overflow in beep helper
ALSA: hda: Add driver blacklist
ALSA: usb-audio: Add mixer workaround for TRX40 and co
usb: gadget: composite: Inform controller driver of self-powered
usb: gadget: f_fs: Fix use after free issue as part of queue failure
ASoC: topology: use name_prefix for new kcontrol
ASoC: dpcm: allow start or stop during pause for backend
ASoC: dapm: connect virtual mux with default value
ASoC: fix regwmask
misc: rtsx: set correct pcr_ops for rts522A
btrfs: track reloc roots based on their commit root bytenr
btrfs: remove a BUG_ON() from merge_reloc_roots()
locking/lockdep: Avoid recursion in lockdep_count_{for,back}ward_deps()
x86/boot: Use unsigned comparison for addresses
gfs2: Don't demote a glock until its revokes are written
libata: Remove extra scsi_host_put() in ata_scsi_add_hosts()
selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault
sched: Avoid scale real weight down to zero
irqchip/versatile-fpga: Handle chained IRQs properly
i2c: st: fix missing struct parameter description
qlcnic: Fix bad kzalloc null test
net: vxge: fix wrong __VA_ARGS__ usage
bus: sunxi-rsb: Return correct data when mixing 16-bit and 8-bit reads
Conflicts:
drivers/of/base.c
drivers/scsi/ufs/ufshcd.c
Change-Id: I5c8628bdd6d5af9a3aec05735eb6fd70011b7c8a
Signed-off-by: jianzhou <jianzhou@codeaurora.org>
82 lines
2.6 KiB
C
82 lines
2.6 KiB
C
/*
|
|
* devfreq_cooling: Thermal cooling device implementation for devices using
|
|
* devfreq
|
|
*
|
|
* Copyright (C) 2014-2015 ARM Limited
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
|
* kind, whether express or implied; without even the implied warranty
|
|
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#ifndef __DEVFREQ_COOLING_H__
|
|
#define __DEVFREQ_COOLING_H__
|
|
|
|
#include <linux/devfreq.h>
|
|
#include <linux/thermal.h>
|
|
|
|
/**
|
|
* struct devfreq_cooling_power - Devfreq cooling power ops
|
|
* @get_static_power: Take voltage, in mV, and return the static power
|
|
* in mW. If NULL, the static power is assumed
|
|
* to be 0.
|
|
* @get_dynamic_power: Take voltage, in mV, and frequency, in HZ, and
|
|
* return the dynamic power draw in mW. If NULL,
|
|
* a simple power model is used.
|
|
* @dyn_power_coeff: Coefficient for the simple dynamic power model in
|
|
* mW/(MHz mV mV).
|
|
* If get_dynamic_power() is NULL, then the
|
|
* dynamic power is calculated as
|
|
* @dyn_power_coeff * frequency * voltage^2
|
|
*/
|
|
struct devfreq_cooling_power {
|
|
unsigned long (*get_static_power)(unsigned long voltage);
|
|
unsigned long (*get_dynamic_power)(unsigned long freq,
|
|
unsigned long voltage);
|
|
unsigned long dyn_power_coeff;
|
|
};
|
|
|
|
#ifdef CONFIG_DEVFREQ_THERMAL
|
|
|
|
struct thermal_cooling_device *
|
|
of_devfreq_cooling_register_power(struct device_node *np, struct devfreq *df,
|
|
struct devfreq_cooling_power *dfc_power);
|
|
struct thermal_cooling_device *
|
|
of_devfreq_cooling_register(struct device_node *np, struct devfreq *df);
|
|
struct thermal_cooling_device *devfreq_cooling_register(struct devfreq *df);
|
|
void devfreq_cooling_unregister(struct thermal_cooling_device *dfc);
|
|
|
|
#else /* !CONFIG_DEVFREQ_THERMAL */
|
|
|
|
static inline struct thermal_cooling_device *
|
|
of_devfreq_cooling_register_power(struct device_node *np, struct devfreq *df,
|
|
struct devfreq_cooling_power *dfc_power)
|
|
{
|
|
return ERR_PTR(-EINVAL);
|
|
}
|
|
|
|
static inline struct thermal_cooling_device *
|
|
of_devfreq_cooling_register(struct device_node *np, struct devfreq *df)
|
|
{
|
|
return ERR_PTR(-EINVAL);
|
|
}
|
|
|
|
static inline struct thermal_cooling_device *
|
|
devfreq_cooling_register(struct devfreq *df)
|
|
{
|
|
return ERR_PTR(-EINVAL);
|
|
}
|
|
|
|
static inline void
|
|
devfreq_cooling_unregister(struct thermal_cooling_device *dfc)
|
|
{
|
|
}
|
|
|
|
#endif /* CONFIG_DEVFREQ_THERMAL */
|
|
#endif /* __DEVFREQ_COOLING_H__ */
|