mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
Driver core merge for 3.7-rc1
Here is the big driver core update for 3.7-rc1.
A number of firmware_class.c updates (as you saw a month or so ago), and
some hyper-v updates and some printk fixes as well. All patches that
are outside of the drivers/base area have been acked by the respective
maintainers, and have all been in the linux-next tree for a while.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
iEYEABECAAYFAlBp3vkACgkQMUfUDdst+ylQoACgldktGFgkCLzH+rGYthrXOC5P
9hUAnjmOhdoHlMTL81vWTlH+BrGernym
=khrr
-----END PGP SIGNATURE-----
Merge tag 'driver-core-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core merge from Greg Kroah-Hartman:
"Here is the big driver core update for 3.7-rc1.
A number of firmware_class.c updates (as you saw a month or so ago),
and some hyper-v updates and some printk fixes as well. All patches
that are outside of the drivers/base area have been acked by the
respective maintainers, and have all been in the linux-next tree for a
while.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
* tag 'driver-core-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (95 commits)
memory: tegra{20,30}-mc: Fix reading incorrect register in mc_readl()
device.h: Add missing inline to #ifndef CONFIG_PRINTK dev_vprintk_emit
memory: emif: Add ifdef CONFIG_DEBUG_FS guard for emif_debugfs_[init|exit]
Documentation: Fixes some translation error in Documentation/zh_CN/gpio.txt
Documentation: Remove 3 byte redundant code at the head of the Documentation/zh_CN/arm/booting
Documentation: Chinese translation of Documentation/video4linux/omap3isp.txt
device and dynamic_debug: Use dev_vprintk_emit and dev_printk_emit
dev: Add dev_vprintk_emit and dev_printk_emit
netdev_printk/netif_printk: Remove a superfluous logging colon
netdev_printk/dynamic_netdev_dbg: Directly call printk_emit
dev_dbg/dynamic_debug: Update to use printk_emit, optimize stack
driver-core: Shut up dev_dbg_reatelimited() without DEBUG
tools/hv: Parse /etc/os-release
tools/hv: Check for read/write errors
tools/hv: Fix exit() error code
tools/hv: Fix file handle leak
Tools: hv: Implement the KVP verb - KVP_OP_GET_IP_INFO
Tools: hv: Rename the function kvp_get_ip_address()
Tools: hv: Implement the KVP verb - KVP_OP_SET_IP_INFO
Tools: hv: Add an example script to configure an interface
...
This commit is contained in:
commit
06d2fe153b
55 changed files with 5807 additions and 545 deletions
|
|
@ -536,6 +536,10 @@ extern void *__devres_alloc(dr_release_t release, size_t size, gfp_t gfp,
|
|||
#else
|
||||
extern void *devres_alloc(dr_release_t release, size_t size, gfp_t gfp);
|
||||
#endif
|
||||
extern void devres_for_each_res(struct device *dev, dr_release_t release,
|
||||
dr_match_t match, void *match_data,
|
||||
void (*fn)(struct device *, void *, void *),
|
||||
void *data);
|
||||
extern void devres_free(void *res);
|
||||
extern void devres_add(struct device *dev, void *res);
|
||||
extern void *devres_find(struct device *dev, dr_release_t release,
|
||||
|
|
@ -891,12 +895,15 @@ extern const char *dev_driver_string(const struct device *dev);
|
|||
|
||||
#ifdef CONFIG_PRINTK
|
||||
|
||||
extern int __dev_printk(const char *level, const struct device *dev,
|
||||
struct va_format *vaf);
|
||||
extern __printf(3, 0)
|
||||
int dev_vprintk_emit(int level, const struct device *dev,
|
||||
const char *fmt, va_list args);
|
||||
extern __printf(3, 4)
|
||||
int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...);
|
||||
|
||||
extern __printf(3, 4)
|
||||
int dev_printk(const char *level, const struct device *dev,
|
||||
const char *fmt, ...)
|
||||
;
|
||||
const char *fmt, ...);
|
||||
extern __printf(2, 3)
|
||||
int dev_emerg(const struct device *dev, const char *fmt, ...);
|
||||
extern __printf(2, 3)
|
||||
|
|
@ -914,6 +921,14 @@ int _dev_info(const struct device *dev, const char *fmt, ...);
|
|||
|
||||
#else
|
||||
|
||||
static inline __printf(3, 0)
|
||||
int dev_vprintk_emit(int level, const struct device *dev,
|
||||
const char *fmt, va_list args)
|
||||
{ return 0; }
|
||||
static inline __printf(3, 4)
|
||||
int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...)
|
||||
{ return 0; }
|
||||
|
||||
static inline int __dev_printk(const char *level, const struct device *dev,
|
||||
struct va_format *vaf)
|
||||
{ return 0; }
|
||||
|
|
@ -946,32 +961,6 @@ int _dev_info(const struct device *dev, const char *fmt, ...)
|
|||
|
||||
#endif
|
||||
|
||||
#define dev_level_ratelimited(dev_level, dev, fmt, ...) \
|
||||
do { \
|
||||
static DEFINE_RATELIMIT_STATE(_rs, \
|
||||
DEFAULT_RATELIMIT_INTERVAL, \
|
||||
DEFAULT_RATELIMIT_BURST); \
|
||||
if (__ratelimit(&_rs)) \
|
||||
dev_level(dev, fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#define dev_emerg_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_emerg, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_alert_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_alert, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_crit_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_crit, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_err_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_err, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_warn_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_warn, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_notice_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_notice, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_info_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_info, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_dbg_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_dbg, dev, fmt, ##__VA_ARGS__)
|
||||
|
||||
/*
|
||||
* Stupid hackaround for existing uses of non-printk uses dev_info
|
||||
*
|
||||
|
|
@ -998,6 +987,46 @@ do { \
|
|||
})
|
||||
#endif
|
||||
|
||||
#define dev_level_ratelimited(dev_level, dev, fmt, ...) \
|
||||
do { \
|
||||
static DEFINE_RATELIMIT_STATE(_rs, \
|
||||
DEFAULT_RATELIMIT_INTERVAL, \
|
||||
DEFAULT_RATELIMIT_BURST); \
|
||||
if (__ratelimit(&_rs)) \
|
||||
dev_level(dev, fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#define dev_emerg_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_emerg, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_alert_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_alert, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_crit_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_crit, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_err_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_err, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_warn_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_warn, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_notice_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_notice, dev, fmt, ##__VA_ARGS__)
|
||||
#define dev_info_ratelimited(dev, fmt, ...) \
|
||||
dev_level_ratelimited(dev_info, dev, fmt, ##__VA_ARGS__)
|
||||
#if defined(CONFIG_DYNAMIC_DEBUG) || defined(DEBUG)
|
||||
#define dev_dbg_ratelimited(dev, fmt, ...) \
|
||||
do { \
|
||||
static DEFINE_RATELIMIT_STATE(_rs, \
|
||||
DEFAULT_RATELIMIT_INTERVAL, \
|
||||
DEFAULT_RATELIMIT_BURST); \
|
||||
DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
|
||||
if (unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT) && \
|
||||
__ratelimit(&_rs)) \
|
||||
__dynamic_pr_debug(&descriptor, pr_fmt(fmt), \
|
||||
##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#else
|
||||
#define dev_dbg_ratelimited(dev, fmt, ...) \
|
||||
no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#ifdef VERBOSE_DEBUG
|
||||
#define dev_vdbg dev_dbg
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -30,19 +30,19 @@
|
|||
|
||||
/*
|
||||
* The standard cable name is to help support general notifier
|
||||
* and notifee device drivers to share the common names.
|
||||
* and notifiee device drivers to share the common names.
|
||||
* Please use standard cable names unless your notifier device has
|
||||
* a very unique and abnormal cable or
|
||||
* the cable type is supposed to be used with only one unique
|
||||
* pair of notifier/notifee devices.
|
||||
* pair of notifier/notifiee devices.
|
||||
*
|
||||
* Please add any other "standard" cables used with extcon dev.
|
||||
*
|
||||
* You may add a dot and number to specify version or specification
|
||||
* of the specific cable if it is required. (e.g., "Fast-charger.18"
|
||||
* and "Fast-charger.10" for 1.8A and 1.0A chargers)
|
||||
* However, the notifee and notifier should be able to handle such
|
||||
* string and if the notifee can negotiate the protocol or idenify,
|
||||
* However, the notifiee and notifier should be able to handle such
|
||||
* string and if the notifiee can negotiate the protocol or identify,
|
||||
* you don't need such convention. This convention is helpful when
|
||||
* notifier can distinguish but notifiee cannot.
|
||||
*/
|
||||
|
|
@ -76,7 +76,7 @@ struct extcon_cable;
|
|||
* struct extcon_dev - An extcon device represents one external connector.
|
||||
* @name The name of this extcon device. Parent device name is used
|
||||
* if NULL.
|
||||
* @supported_cable Array of supported cable name ending with NULL.
|
||||
* @supported_cable Array of supported cable names ending with NULL.
|
||||
* If supported_cable is NULL, cable name related APIs
|
||||
* are disabled.
|
||||
* @mutually_exclusive Array of mutually exclusive set of cables that cannot
|
||||
|
|
@ -95,7 +95,7 @@ struct extcon_cable;
|
|||
* @state Attach/detach state of this extcon. Do not provide at
|
||||
* register-time
|
||||
* @nh Notifier for the state change events from this extcon
|
||||
* @entry To support list of extcon devices so that uses can search
|
||||
* @entry To support list of extcon devices so that users can search
|
||||
* for extcon devices based on the extcon name.
|
||||
* @lock
|
||||
* @max_supported Internal value to store the number of cables.
|
||||
|
|
@ -199,7 +199,7 @@ extern int extcon_update_state(struct extcon_dev *edev, u32 mask, u32 state);
|
|||
/*
|
||||
* get/set_cable_state access each bit of the 32b encoded state value.
|
||||
* They are used to access the status of each cable based on the cable_name
|
||||
* or cable_index, which is retrived by extcon_find_cable_index
|
||||
* or cable_index, which is retrieved by extcon_find_cable_index
|
||||
*/
|
||||
extern int extcon_find_cable_index(struct extcon_dev *sdev,
|
||||
const char *cable_name);
|
||||
|
|
@ -226,9 +226,9 @@ extern int extcon_unregister_interest(struct extcon_specific_cable_nb *nb);
|
|||
|
||||
/*
|
||||
* Following APIs are to monitor every action of a notifier.
|
||||
* Registerer gets notified for every external port of a connection device.
|
||||
* Registrar gets notified for every external port of a connection device.
|
||||
* Probably this could be used to debug an action of notifier; however,
|
||||
* we do not recommend to use this at normal 'notifiee' device drivers who
|
||||
* we do not recommend to use this for normal 'notifiee' device drivers who
|
||||
* want to be notified by a specific external port of the notifier.
|
||||
*/
|
||||
extern int extcon_register_notifier(struct extcon_dev *edev,
|
||||
|
|
|
|||
71
include/linux/extcon/extcon-adc-jack.h
Normal file
71
include/linux/extcon/extcon-adc-jack.h
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* include/linux/extcon/extcon-adc-jack.h
|
||||
*
|
||||
* Analog Jack extcon driver with ADC-based detection capability.
|
||||
*
|
||||
* Copyright (C) 2012 Samsung Electronics
|
||||
* MyungJoo Ham <myungjoo.ham@samsung.com>
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _EXTCON_ADC_JACK_H_
|
||||
#define _EXTCON_ADC_JACK_H_ __FILE__
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/extcon.h>
|
||||
|
||||
/**
|
||||
* struct adc_jack_cond - condition to use an extcon state
|
||||
* @state - the corresponding extcon state (if 0, this struct denotes
|
||||
* the last adc_jack_cond element among the array)
|
||||
* @min_adc - min adc value for this condition
|
||||
* @max_adc - max adc value for this condition
|
||||
*
|
||||
* For example, if { .state = 0x3, .min_adc = 100, .max_adc = 200}, it means
|
||||
* that if ADC value is between (inclusive) 100 and 200, than the cable 0 and
|
||||
* 1 are attached (1<<0 | 1<<1 == 0x3)
|
||||
*
|
||||
* Note that you don't need to describe condition for "no cable attached"
|
||||
* because when no adc_jack_cond is met, state = 0 is automatically chosen.
|
||||
*/
|
||||
struct adc_jack_cond {
|
||||
u32 state; /* extcon state value. 0 if invalid */
|
||||
u32 min_adc;
|
||||
u32 max_adc;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct adc_jack_pdata - platform data for adc jack device.
|
||||
* @name - name of the extcon device. If null, "adc-jack" is used.
|
||||
* @consumer_channel - Unique name to identify the channel on the consumer
|
||||
* side. This typically describes the channels used within
|
||||
* the consumer. E.g. 'battery_voltage'
|
||||
* @cable_names - array of cable names ending with null.
|
||||
* @adc_contitions - array of struct adc_jack_cond conditions ending
|
||||
* with .state = 0 entry. This describes how to decode
|
||||
* adc values into extcon state.
|
||||
* @irq_flags - irq flags used for the @irq
|
||||
* @handling_delay_ms - in some devices, we need to read ADC value some
|
||||
* milli-seconds after the interrupt occurs. You may
|
||||
* describe such delays with @handling_delay_ms, which
|
||||
* is rounded-off by jiffies.
|
||||
*/
|
||||
struct adc_jack_pdata {
|
||||
const char *name;
|
||||
const char *consumer_channel;
|
||||
/*
|
||||
* The last entry should be NULL
|
||||
*/
|
||||
const char **cable_names;
|
||||
/* The last entry's state should be 0 */
|
||||
struct adc_jack_cond *adc_conditions;
|
||||
|
||||
unsigned long irq_flags;
|
||||
unsigned long handling_delay_ms; /* in ms */
|
||||
};
|
||||
|
||||
#endif /* _EXTCON_ADC_JACK_H */
|
||||
|
|
@ -12,6 +12,9 @@ struct firmware {
|
|||
size_t size;
|
||||
const u8 *data;
|
||||
struct page **pages;
|
||||
|
||||
/* firmware loader private fields */
|
||||
void *priv;
|
||||
};
|
||||
|
||||
struct module;
|
||||
|
|
@ -44,6 +47,8 @@ int request_firmware_nowait(
|
|||
void (*cont)(const struct firmware *fw, void *context));
|
||||
|
||||
void release_firmware(const struct firmware *fw);
|
||||
int cache_firmware(const char *name);
|
||||
int uncache_firmware(const char *name);
|
||||
#else
|
||||
static inline int request_firmware(const struct firmware **fw,
|
||||
const char *name,
|
||||
|
|
@ -62,6 +67,16 @@ static inline int request_firmware_nowait(
|
|||
static inline void release_firmware(const struct firmware *fw)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int cache_firmware(const char *name)
|
||||
{
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
static inline int uncache_firmware(const char *name)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -122,12 +122,53 @@
|
|||
#define REG_U32 4
|
||||
#define REG_U64 8
|
||||
|
||||
/*
|
||||
* As we look at expanding the KVP functionality to include
|
||||
* IP injection functionality, we need to maintain binary
|
||||
* compatibility with older daemons.
|
||||
*
|
||||
* The KVP opcodes are defined by the host and it was unfortunate
|
||||
* that I chose to treat the registration operation as part of the
|
||||
* KVP operations defined by the host.
|
||||
* Here is the level of compatibility
|
||||
* (between the user level daemon and the kernel KVP driver) that we
|
||||
* will implement:
|
||||
*
|
||||
* An older daemon will always be supported on a newer driver.
|
||||
* A given user level daemon will require a minimal version of the
|
||||
* kernel driver.
|
||||
* If we cannot handle the version differences, we will fail gracefully
|
||||
* (this can happen when we have a user level daemon that is more
|
||||
* advanced than the KVP driver.
|
||||
*
|
||||
* We will use values used in this handshake for determining if we have
|
||||
* workable user level daemon and the kernel driver. We begin by taking the
|
||||
* registration opcode out of the KVP opcode namespace. We will however,
|
||||
* maintain compatibility with the existing user-level daemon code.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Daemon code not supporting IP injection (legacy daemon).
|
||||
*/
|
||||
|
||||
#define KVP_OP_REGISTER 4
|
||||
|
||||
/*
|
||||
* Daemon code supporting IP injection.
|
||||
* The KVP opcode field is used to communicate the
|
||||
* registration information; so define a namespace that
|
||||
* will be distinct from the host defined KVP opcode.
|
||||
*/
|
||||
|
||||
#define KVP_OP_REGISTER1 100
|
||||
|
||||
enum hv_kvp_exchg_op {
|
||||
KVP_OP_GET = 0,
|
||||
KVP_OP_SET,
|
||||
KVP_OP_DELETE,
|
||||
KVP_OP_ENUMERATE,
|
||||
KVP_OP_REGISTER,
|
||||
KVP_OP_GET_IP_INFO,
|
||||
KVP_OP_SET_IP_INFO,
|
||||
KVP_OP_COUNT /* Number of operations, must be last. */
|
||||
};
|
||||
|
||||
|
|
@ -140,6 +181,39 @@ enum hv_kvp_exchg_pool {
|
|||
KVP_POOL_COUNT /* Number of pools, must be last. */
|
||||
};
|
||||
|
||||
/*
|
||||
* Some Hyper-V status codes.
|
||||
*/
|
||||
|
||||
#define HV_S_OK 0x00000000
|
||||
#define HV_E_FAIL 0x80004005
|
||||
#define HV_S_CONT 0x80070103
|
||||
#define HV_ERROR_NOT_SUPPORTED 0x80070032
|
||||
#define HV_ERROR_MACHINE_LOCKED 0x800704F7
|
||||
#define HV_ERROR_DEVICE_NOT_CONNECTED 0x8007048F
|
||||
#define HV_INVALIDARG 0x80070057
|
||||
#define HV_GUID_NOTFOUND 0x80041002
|
||||
|
||||
#define ADDR_FAMILY_NONE 0x00
|
||||
#define ADDR_FAMILY_IPV4 0x01
|
||||
#define ADDR_FAMILY_IPV6 0x02
|
||||
|
||||
#define MAX_ADAPTER_ID_SIZE 128
|
||||
#define MAX_IP_ADDR_SIZE 1024
|
||||
#define MAX_GATEWAY_SIZE 512
|
||||
|
||||
|
||||
struct hv_kvp_ipaddr_value {
|
||||
__u16 adapter_id[MAX_ADAPTER_ID_SIZE];
|
||||
__u8 addr_family;
|
||||
__u8 dhcp_enabled;
|
||||
__u16 ip_addr[MAX_IP_ADDR_SIZE];
|
||||
__u16 sub_net[MAX_IP_ADDR_SIZE];
|
||||
__u16 gate_way[MAX_GATEWAY_SIZE];
|
||||
__u16 dns_addr[MAX_IP_ADDR_SIZE];
|
||||
} __attribute__((packed));
|
||||
|
||||
|
||||
struct hv_kvp_hdr {
|
||||
__u8 operation;
|
||||
__u8 pool;
|
||||
|
|
@ -181,16 +255,26 @@ struct hv_kvp_register {
|
|||
};
|
||||
|
||||
struct hv_kvp_msg {
|
||||
struct hv_kvp_hdr kvp_hdr;
|
||||
union {
|
||||
struct hv_kvp_hdr kvp_hdr;
|
||||
int error;
|
||||
};
|
||||
union {
|
||||
struct hv_kvp_msg_get kvp_get;
|
||||
struct hv_kvp_msg_set kvp_set;
|
||||
struct hv_kvp_msg_delete kvp_delete;
|
||||
struct hv_kvp_msg_enumerate kvp_enum_data;
|
||||
struct hv_kvp_ipaddr_value kvp_ip_val;
|
||||
struct hv_kvp_register kvp_register;
|
||||
} body;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct hv_kvp_ip_msg {
|
||||
__u8 operation;
|
||||
__u8 pool;
|
||||
struct hv_kvp_ipaddr_value kvp_ip_val;
|
||||
} __attribute__((packed));
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/list.h>
|
||||
|
|
@ -405,7 +489,7 @@ struct vmtransfer_page_range {
|
|||
struct vmtransfer_page_packet_header {
|
||||
struct vmpacket_descriptor d;
|
||||
u16 xfer_pageset_id;
|
||||
bool sender_owns_set;
|
||||
u8 sender_owns_set;
|
||||
u8 reserved;
|
||||
u32 range_cnt;
|
||||
struct vmtransfer_page_range ranges[1];
|
||||
|
|
@ -559,7 +643,7 @@ struct vmbus_channel_query_vmbus_version {
|
|||
/* VMBus Version Supported parameters */
|
||||
struct vmbus_channel_version_supported {
|
||||
struct vmbus_channel_message_header header;
|
||||
bool version_supported;
|
||||
u8 version_supported;
|
||||
} __packed;
|
||||
|
||||
/* Offer Channel parameters */
|
||||
|
|
@ -568,7 +652,7 @@ struct vmbus_channel_offer_channel {
|
|||
struct vmbus_channel_offer offer;
|
||||
u32 child_relid;
|
||||
u8 monitorid;
|
||||
bool monitor_allocated;
|
||||
u8 monitor_allocated;
|
||||
} __packed;
|
||||
|
||||
/* Rescind Offer parameters */
|
||||
|
|
@ -704,7 +788,7 @@ struct vmbus_channel_initiate_contact {
|
|||
|
||||
struct vmbus_channel_version_response {
|
||||
struct vmbus_channel_message_header header;
|
||||
bool version_supported;
|
||||
u8 version_supported;
|
||||
} __packed;
|
||||
|
||||
enum vmbus_channel_state {
|
||||
|
|
@ -977,11 +1061,6 @@ void vmbus_driver_unregister(struct hv_driver *hv_driver);
|
|||
#define ICMSGHDRFLAG_REQUEST 2
|
||||
#define ICMSGHDRFLAG_RESPONSE 4
|
||||
|
||||
#define HV_S_OK 0x00000000
|
||||
#define HV_E_FAIL 0x80004005
|
||||
#define HV_S_CONT 0x80070103
|
||||
#define HV_ERROR_NOT_SUPPORTED 0x80070032
|
||||
#define HV_ERROR_MACHINE_LOCKED 0x800704F7
|
||||
|
||||
/*
|
||||
* While we want to handle util services as regular devices,
|
||||
|
|
|
|||
|
|
@ -2720,9 +2720,6 @@ static inline const char *netdev_name(const struct net_device *dev)
|
|||
return dev->name;
|
||||
}
|
||||
|
||||
extern int __netdev_printk(const char *level, const struct net_device *dev,
|
||||
struct va_format *vaf);
|
||||
|
||||
extern __printf(3, 4)
|
||||
int netdev_printk(const char *level, const struct net_device *dev,
|
||||
const char *format, ...);
|
||||
|
|
|
|||
|
|
@ -14,11 +14,15 @@
|
|||
#include <linux/device.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
|
||||
#define PLATFORM_DEVID_NONE (-1)
|
||||
#define PLATFORM_DEVID_AUTO (-2)
|
||||
|
||||
struct mfd_cell;
|
||||
|
||||
struct platform_device {
|
||||
const char * name;
|
||||
int id;
|
||||
bool id_auto;
|
||||
struct device dev;
|
||||
u32 num_resources;
|
||||
struct resource * resource;
|
||||
|
|
|
|||
|
|
@ -638,6 +638,7 @@ extern void __suspend_report_result(const char *function, void *fn, int ret);
|
|||
} while (0)
|
||||
|
||||
extern int device_pm_wait_for_dev(struct device *sub, struct device *dev);
|
||||
extern void dpm_for_each_dev(void *data, void (*fn)(struct device *, void *));
|
||||
|
||||
extern int pm_generic_prepare(struct device *dev);
|
||||
extern int pm_generic_suspend_late(struct device *dev);
|
||||
|
|
@ -677,6 +678,10 @@ static inline int device_pm_wait_for_dev(struct device *a, struct device *b)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void dpm_for_each_dev(void *data, void (*fn)(struct device *, void *))
|
||||
{
|
||||
}
|
||||
|
||||
#define pm_generic_prepare NULL
|
||||
#define pm_generic_suspend NULL
|
||||
#define pm_generic_resume NULL
|
||||
|
|
|
|||
Loading…
Reference in a new issue