Merge branch 'samsung/driver' into next/drivers
Conflicts: arch/arm/mach-mxs/include/mach/common.h Pull in previous samsung conflict merges and do a trivial merge of an mxs double-add conflict. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
@@ -40,6 +40,7 @@ typedef u64 cputime64_t;
|
||||
*/
|
||||
#define cputime_to_usecs(__ct) jiffies_to_usecs(__ct)
|
||||
#define usecs_to_cputime(__msecs) usecs_to_jiffies(__msecs)
|
||||
#define usecs_to_cputime64(__msecs) nsecs_to_jiffies64((__msecs) * 1000)
|
||||
|
||||
/*
|
||||
* Convert cputime to seconds and back.
|
||||
|
||||
@@ -71,7 +71,7 @@ struct timecounter {
|
||||
|
||||
/**
|
||||
* cyclecounter_cyc2ns - converts cycle counter cycles to nanoseconds
|
||||
* @tc: Pointer to cycle counter.
|
||||
* @cc: Pointer to cycle counter.
|
||||
* @cycles: Cycles
|
||||
*
|
||||
* XXX - This could use some mult_lxl_ll() asm optimization. Same code
|
||||
@@ -114,7 +114,7 @@ extern u64 timecounter_read(struct timecounter *tc);
|
||||
* time base as values returned by
|
||||
* timecounter_read()
|
||||
* @tc: Pointer to time counter.
|
||||
* @cycle: a value returned by tc->cc->read()
|
||||
* @cycle_tstamp: a value returned by tc->cc->read()
|
||||
*
|
||||
* Cycle counts that are converted correctly as long as they
|
||||
* fall into the interval [-1/2 max cycle count, +1/2 max cycle count],
|
||||
@@ -156,11 +156,12 @@ extern u64 timecounter_cyc2time(struct timecounter *tc,
|
||||
* @mult: cycle to nanosecond multiplier
|
||||
* @shift: cycle to nanosecond divisor (power of two)
|
||||
* @max_idle_ns: max idle time permitted by the clocksource (nsecs)
|
||||
* @maxadj maximum adjustment value to mult (~11%)
|
||||
* @maxadj: maximum adjustment value to mult (~11%)
|
||||
* @flags: flags describing special properties
|
||||
* @archdata: arch-specific data
|
||||
* @suspend: suspend function for the clocksource, if necessary
|
||||
* @resume: resume function for the clocksource, if necessary
|
||||
* @cycle_last: most recent cycle counter value seen by ::read()
|
||||
*/
|
||||
struct clocksource {
|
||||
/*
|
||||
@@ -187,6 +188,7 @@ struct clocksource {
|
||||
void (*suspend)(struct clocksource *cs);
|
||||
void (*resume)(struct clocksource *cs);
|
||||
|
||||
/* private: */
|
||||
#ifdef CONFIG_CLOCKSOURCE_WATCHDOG
|
||||
/* Watchdog related data, used by the framework */
|
||||
struct list_head wd_list;
|
||||
@@ -261,6 +263,9 @@ static inline u32 clocksource_hz2mult(u32 hz, u32 shift_constant)
|
||||
|
||||
/**
|
||||
* clocksource_cyc2ns - converts clocksource cycles to nanoseconds
|
||||
* @cycles: cycles
|
||||
* @mult: cycle to nanosecond multiplier
|
||||
* @shift: cycle to nanosecond divisor (power of two)
|
||||
*
|
||||
* Converts cycles to nanoseconds, using the given mult and shift.
|
||||
*
|
||||
|
||||
@@ -91,10 +91,11 @@ static inline unsigned int irq_domain_to_irq(struct irq_domain *d,
|
||||
|
||||
extern void irq_domain_add(struct irq_domain *domain);
|
||||
extern void irq_domain_del(struct irq_domain *domain);
|
||||
|
||||
extern struct irq_domain_ops irq_domain_simple_ops;
|
||||
#endif /* CONFIG_IRQ_DOMAIN */
|
||||
|
||||
#if defined(CONFIG_IRQ_DOMAIN) && defined(CONFIG_OF_IRQ)
|
||||
extern struct irq_domain_ops irq_domain_simple_ops;
|
||||
extern void irq_domain_add_simple(struct device_node *controller, int irq_base);
|
||||
extern void irq_domain_generate_simple(const struct of_device_id *match,
|
||||
u64 phys_base, unsigned int irq_start);
|
||||
|
||||
@@ -557,6 +557,7 @@ struct kvm_ppc_pvinfo {
|
||||
#define KVM_CAP_MAX_VCPUS 66 /* returns max vcpus per vm */
|
||||
#define KVM_CAP_PPC_PAPR 68
|
||||
#define KVM_CAP_S390_GMAP 71
|
||||
#define KVM_CAP_TSC_DEADLINE_TIMER 72
|
||||
|
||||
#ifdef KVM_CAP_IRQ_ROUTING
|
||||
|
||||
|
||||
+32
-4
@@ -22,6 +22,7 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/lockdep.h>
|
||||
#include <linux/percpu.h>
|
||||
#include <linux/cpu.h>
|
||||
|
||||
/* can make br locks by using local lock for read side, global lock for write */
|
||||
#define br_lock_init(name) name##_lock_init()
|
||||
@@ -72,9 +73,31 @@
|
||||
|
||||
#define DEFINE_LGLOCK(name) \
|
||||
\
|
||||
DEFINE_SPINLOCK(name##_cpu_lock); \
|
||||
cpumask_t name##_cpus __read_mostly; \
|
||||
DEFINE_PER_CPU(arch_spinlock_t, name##_lock); \
|
||||
DEFINE_LGLOCK_LOCKDEP(name); \
|
||||
\
|
||||
static int \
|
||||
name##_lg_cpu_callback(struct notifier_block *nb, \
|
||||
unsigned long action, void *hcpu) \
|
||||
{ \
|
||||
switch (action & ~CPU_TASKS_FROZEN) { \
|
||||
case CPU_UP_PREPARE: \
|
||||
spin_lock(&name##_cpu_lock); \
|
||||
cpu_set((unsigned long)hcpu, name##_cpus); \
|
||||
spin_unlock(&name##_cpu_lock); \
|
||||
break; \
|
||||
case CPU_UP_CANCELED: case CPU_DEAD: \
|
||||
spin_lock(&name##_cpu_lock); \
|
||||
cpu_clear((unsigned long)hcpu, name##_cpus); \
|
||||
spin_unlock(&name##_cpu_lock); \
|
||||
} \
|
||||
return NOTIFY_OK; \
|
||||
} \
|
||||
static struct notifier_block name##_lg_cpu_notifier = { \
|
||||
.notifier_call = name##_lg_cpu_callback, \
|
||||
}; \
|
||||
void name##_lock_init(void) { \
|
||||
int i; \
|
||||
LOCKDEP_INIT_MAP(&name##_lock_dep_map, #name, &name##_lock_key, 0); \
|
||||
@@ -83,6 +106,11 @@
|
||||
lock = &per_cpu(name##_lock, i); \
|
||||
*lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED; \
|
||||
} \
|
||||
register_hotcpu_notifier(&name##_lg_cpu_notifier); \
|
||||
get_online_cpus(); \
|
||||
for_each_online_cpu(i) \
|
||||
cpu_set(i, name##_cpus); \
|
||||
put_online_cpus(); \
|
||||
} \
|
||||
EXPORT_SYMBOL(name##_lock_init); \
|
||||
\
|
||||
@@ -124,9 +152,9 @@
|
||||
\
|
||||
void name##_global_lock_online(void) { \
|
||||
int i; \
|
||||
preempt_disable(); \
|
||||
spin_lock(&name##_cpu_lock); \
|
||||
rwlock_acquire(&name##_lock_dep_map, 0, 0, _RET_IP_); \
|
||||
for_each_online_cpu(i) { \
|
||||
for_each_cpu(i, &name##_cpus) { \
|
||||
arch_spinlock_t *lock; \
|
||||
lock = &per_cpu(name##_lock, i); \
|
||||
arch_spin_lock(lock); \
|
||||
@@ -137,12 +165,12 @@
|
||||
void name##_global_unlock_online(void) { \
|
||||
int i; \
|
||||
rwlock_release(&name##_lock_dep_map, 1, _RET_IP_); \
|
||||
for_each_online_cpu(i) { \
|
||||
for_each_cpu(i, &name##_cpus) { \
|
||||
arch_spinlock_t *lock; \
|
||||
lock = &per_cpu(name##_lock, i); \
|
||||
arch_spin_unlock(lock); \
|
||||
} \
|
||||
preempt_enable(); \
|
||||
spin_unlock(&name##_cpu_lock); \
|
||||
} \
|
||||
EXPORT_SYMBOL(name##_global_unlock_online); \
|
||||
\
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
struct macb_platform_data {
|
||||
u32 phy_mask;
|
||||
u8 phy_irq_pin; /* PHY IRQ */
|
||||
int phy_irq_pin; /* PHY IRQ */
|
||||
u8 is_rmii; /* using RMII interface? */
|
||||
};
|
||||
|
||||
|
||||
@@ -131,6 +131,7 @@ extern long vwrite(char *buf, char *addr, unsigned long count);
|
||||
*/
|
||||
extern rwlock_t vmlist_lock;
|
||||
extern struct vm_struct *vmlist;
|
||||
extern __init void vm_area_add_early(struct vm_struct *vm);
|
||||
extern __init void vm_area_register_early(struct vm_struct *vm, size_t align);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
* Copyright (C) 2011 Texas Instruments Inc
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation version 2.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#ifndef _VPIF_TYPES_H
|
||||
#define _VPIF_TYPES_H
|
||||
|
||||
#define VPIF_CAPTURE_MAX_CHANNELS 2
|
||||
|
||||
enum vpif_if_type {
|
||||
VPIF_IF_BT656,
|
||||
VPIF_IF_BT1120,
|
||||
VPIF_IF_RAW_BAYER
|
||||
};
|
||||
|
||||
struct vpif_interface {
|
||||
enum vpif_if_type if_type;
|
||||
unsigned hd_pol:1;
|
||||
unsigned vd_pol:1;
|
||||
unsigned fid_pol:1;
|
||||
};
|
||||
|
||||
struct vpif_subdev_info {
|
||||
const char *name;
|
||||
struct i2c_board_info board_info;
|
||||
u32 input;
|
||||
u32 output;
|
||||
unsigned can_route:1;
|
||||
struct vpif_interface vpif_if;
|
||||
};
|
||||
|
||||
struct vpif_display_config {
|
||||
int (*set_clock)(int, int);
|
||||
struct vpif_subdev_info *subdevinfo;
|
||||
int subdev_count;
|
||||
const char **output;
|
||||
int output_count;
|
||||
const char *card_name;
|
||||
};
|
||||
|
||||
struct vpif_input {
|
||||
struct v4l2_input input;
|
||||
const char *subdev_name;
|
||||
};
|
||||
|
||||
struct vpif_capture_chan_config {
|
||||
const struct vpif_input *inputs;
|
||||
int input_count;
|
||||
};
|
||||
|
||||
struct vpif_capture_config {
|
||||
int (*setup_input_channel_mode)(int);
|
||||
int (*setup_input_path)(int, const char *);
|
||||
struct vpif_capture_chan_config chan_config[VPIF_CAPTURE_MAX_CHANNELS];
|
||||
struct vpif_subdev_info *subdev_info;
|
||||
int subdev_count;
|
||||
const char *card_name;
|
||||
};
|
||||
#endif /* _VPIF_TYPES_H */
|
||||
@@ -254,7 +254,7 @@ unsigned long soc_camera_apply_board_flags(struct soc_camera_link *icl,
|
||||
static inline struct video_device *soc_camera_i2c_to_vdev(const struct i2c_client *client)
|
||||
{
|
||||
struct v4l2_subdev *sd = i2c_get_clientdata(client);
|
||||
struct soc_camera_device *icd = (struct soc_camera_device *)sd->grp_id;
|
||||
struct soc_camera_device *icd = v4l2_get_subdev_hostdata(sd);
|
||||
return icd ? icd->vdev : NULL;
|
||||
}
|
||||
|
||||
@@ -279,6 +279,11 @@ static inline struct soc_camera_device *soc_camera_from_vbq(const struct videobu
|
||||
return container_of(vq, struct soc_camera_device, vb_vidq);
|
||||
}
|
||||
|
||||
static inline u32 soc_camera_grp_id(const struct soc_camera_device *icd)
|
||||
{
|
||||
return (icd->iface << 8) | (icd->devnum + 1);
|
||||
}
|
||||
|
||||
void soc_camera_lock(struct vb2_queue *vq);
|
||||
void soc_camera_unlock(struct vb2_queue *vq);
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@ struct dst_entry {
|
||||
#define DST_NOHASH 0x0008
|
||||
#define DST_NOCACHE 0x0010
|
||||
#define DST_NOCOUNT 0x0020
|
||||
#define DST_NOPEER 0x0040
|
||||
|
||||
short error;
|
||||
short obsolete;
|
||||
|
||||
@@ -207,6 +207,7 @@ extern struct flow_cache_object *flow_cache_lookup(
|
||||
u8 dir, flow_resolve_t resolver, void *ctx);
|
||||
|
||||
extern void flow_cache_flush(void);
|
||||
extern void flow_cache_flush_deferred(void);
|
||||
extern atomic_t flow_cache_genid;
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -1207,7 +1207,7 @@ extern void ip_vs_control_cleanup(void);
|
||||
extern struct ip_vs_dest *
|
||||
ip_vs_find_dest(struct net *net, int af, const union nf_inet_addr *daddr,
|
||||
__be16 dport, const union nf_inet_addr *vaddr, __be16 vport,
|
||||
__u16 protocol, __u32 fwmark);
|
||||
__u16 protocol, __u32 fwmark, __u32 flags);
|
||||
extern struct ip_vs_dest *ip_vs_try_bind_dest(struct ip_vs_conn *cp);
|
||||
|
||||
|
||||
|
||||
@@ -241,6 +241,9 @@ extern struct sctp_globals {
|
||||
* bits is an indicator of when to send and window update SACK.
|
||||
*/
|
||||
int rwnd_update_shift;
|
||||
|
||||
/* Threshold for autoclose timeout, in seconds. */
|
||||
unsigned long max_autoclose;
|
||||
} sctp_globals;
|
||||
|
||||
#define sctp_rto_initial (sctp_globals.rto_initial)
|
||||
@@ -281,6 +284,7 @@ extern struct sctp_globals {
|
||||
#define sctp_auth_enable (sctp_globals.auth_enable)
|
||||
#define sctp_checksum_disable (sctp_globals.checksum_disable)
|
||||
#define sctp_rwnd_upd_shift (sctp_globals.rwnd_update_shift)
|
||||
#define sctp_max_autoclose (sctp_globals.max_autoclose)
|
||||
|
||||
/* SCTP Socket type: UDP or TCP style. */
|
||||
typedef enum {
|
||||
|
||||
+3
-1
@@ -637,12 +637,14 @@ static inline void __sk_add_backlog(struct sock *sk, struct sk_buff *skb)
|
||||
|
||||
/*
|
||||
* Take into account size of receive queue and backlog queue
|
||||
* Do not take into account this skb truesize,
|
||||
* to allow even a single big packet to come.
|
||||
*/
|
||||
static inline bool sk_rcvqueues_full(const struct sock *sk, const struct sk_buff *skb)
|
||||
{
|
||||
unsigned int qsize = sk->sk_backlog.len + atomic_read(&sk->sk_rmem_alloc);
|
||||
|
||||
return qsize + skb->truesize > sk->sk_rcvbuf;
|
||||
return qsize > sk->sk_rcvbuf;
|
||||
}
|
||||
|
||||
/* The per-socket spinlock must be held here. */
|
||||
|
||||
@@ -147,6 +147,7 @@ struct fcoe_ctlr {
|
||||
u8 map_dest;
|
||||
u8 spma;
|
||||
u8 probe_tries;
|
||||
u8 priority;
|
||||
u8 dest_addr[ETH_ALEN];
|
||||
u8 ctl_src_addr[ETH_ALEN];
|
||||
|
||||
@@ -301,6 +302,7 @@ struct fcoe_percpu_s {
|
||||
* @lport: The associated local port
|
||||
* @fcoe_pending_queue: The pending Rx queue of skbs
|
||||
* @fcoe_pending_queue_active: Indicates if the pending queue is active
|
||||
* @priority: Packet priority (DCB)
|
||||
* @max_queue_depth: Max queue depth of pending queue
|
||||
* @min_queue_depth: Min queue depth of pending queue
|
||||
* @timer: The queue timer
|
||||
@@ -316,6 +318,7 @@ struct fcoe_port {
|
||||
struct fc_lport *lport;
|
||||
struct sk_buff_head fcoe_pending_queue;
|
||||
u8 fcoe_pending_queue_active;
|
||||
u8 priority;
|
||||
u32 max_queue_depth;
|
||||
u32 min_queue_depth;
|
||||
struct timer_list timer;
|
||||
|
||||
@@ -21,6 +21,16 @@
|
||||
{I_REFERENCED, "I_REFERENCED"} \
|
||||
)
|
||||
|
||||
#define WB_WORK_REASON \
|
||||
{WB_REASON_BACKGROUND, "background"}, \
|
||||
{WB_REASON_TRY_TO_FREE_PAGES, "try_to_free_pages"}, \
|
||||
{WB_REASON_SYNC, "sync"}, \
|
||||
{WB_REASON_PERIODIC, "periodic"}, \
|
||||
{WB_REASON_LAPTOP_TIMER, "laptop_timer"}, \
|
||||
{WB_REASON_FREE_MORE_MEM, "free_more_memory"}, \
|
||||
{WB_REASON_FS_FREE_SPACE, "fs_free_space"}, \
|
||||
{WB_REASON_FORKER_THREAD, "forker_thread"}
|
||||
|
||||
struct wb_writeback_work;
|
||||
|
||||
DECLARE_EVENT_CLASS(writeback_work_class,
|
||||
@@ -55,7 +65,7 @@ DECLARE_EVENT_CLASS(writeback_work_class,
|
||||
__entry->for_kupdate,
|
||||
__entry->range_cyclic,
|
||||
__entry->for_background,
|
||||
wb_reason_name[__entry->reason]
|
||||
__print_symbolic(__entry->reason, WB_WORK_REASON)
|
||||
)
|
||||
);
|
||||
#define DEFINE_WRITEBACK_WORK_EVENT(name) \
|
||||
@@ -184,7 +194,8 @@ TRACE_EVENT(writeback_queue_io,
|
||||
__entry->older, /* older_than_this in jiffies */
|
||||
__entry->age, /* older_than_this in relative milliseconds */
|
||||
__entry->moved,
|
||||
wb_reason_name[__entry->reason])
|
||||
__print_symbolic(__entry->reason, WB_WORK_REASON)
|
||||
)
|
||||
);
|
||||
|
||||
TRACE_EVENT(global_dirty_state,
|
||||
|
||||
@@ -29,8 +29,7 @@ enum xsd_sockmsg_type
|
||||
XS_IS_DOMAIN_INTRODUCED,
|
||||
XS_RESUME,
|
||||
XS_SET_TARGET,
|
||||
XS_RESTRICT,
|
||||
XS_RESET_WATCHES
|
||||
XS_RESTRICT
|
||||
};
|
||||
|
||||
#define XS_WRITE_NONE "NONE"
|
||||
|
||||
Reference in New Issue
Block a user