Omapdss driver changes for 3.5 merge window.
Lots of normal development commits, but perhaps most notable changes are: * HDMI rework to properly decouple the HDMI audio part from the HDMI video part. * Restructure omapdss core driver so that it's possible to implement device tree support. This included changing how platform data is passed to the drivers, changing display device registration and improving the panel driver's ability to configure the underlying video output interface. * Basic support for DSI packet interleaving -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJPu2LWAAoJEPo9qoy8lh71bo0P/2iTw1WLHiRqOwwXSqOQHm2U EFzA4T36qS29h5g9yA1uHnRo2CO7UVL6kOFShk5vzpiBjwZ0e0nPPUxK919hyYEP vbrOq4dzdIx4+IYhlFusMKi1OR2JhbmOjE7gx3e1fNby7XxXY2TO2/i98lVKT0bi wcJN3cTtXcwZOjApxudIf0J4A/0YRzqGIumnkYKwZWqiW5Rv1+dfb5/Ml5fhYvsH IehLQZs8IHtCbM7qw1yDeVAnBUgsuLPCyep3W/zm1MEscboevifw50sFIRwG5GBQ cmid+Fi7u3R0/yv/UK2XBGFf7PbeZxWyM5nuZ5raajS/X0mxT1fkGcre1AxNzvgE 3gjfS9m40WKLpod1hsbXZsX1ksCiBddvT5xkgoiyhfa2G2TDGnOEHmKE4sYuq7qF Zc2YuJMahb+iWrPN966Io4PpgscMEjP732b0tg03MtwgR+liajqiuMzA56PDHaTA bwwFNS3DVIoEpgeN778PWQJ1mRprlYnK7lyJvpGlrEnDh9tM0Xi/35QDlFl1hvAp ZKD9oSkK0cIvZB690J6pRoaVv0PfjHspxFDX28FICTQROV2lJ5P9JOwGi+Bk9FwD eBPchUsivnAuhVthp3YwFod5JyN5ZVSD+9Xe9dXUwstRJo9dJMYLY+E41+N4UUS9 BS2/SKvWqc2NcmIgerO3 =I8Se -----END PGP SIGNATURE----- Merge tag 'omapdss-for-3.5' of git://github.com/tomba/linux into fbdev-next Omapdss driver changes for 3.5 merge window. Lots of normal development commits, but perhaps most notable changes are: * HDMI rework to properly decouple the HDMI audio part from the HDMI video part. * Restructure omapdss core driver so that it's possible to implement device tree support. This included changing how platform data is passed to the drivers, changing display device registration and improving the panel driver's ability to configure the underlying video output interface. * Basic support for DSI packet interleaving
This commit is contained in:
commit
d85d135d8b
606 changed files with 7940 additions and 5735 deletions
|
|
@ -30,7 +30,6 @@ struct amba_device {
|
|||
struct device dev;
|
||||
struct resource res;
|
||||
struct clk *pclk;
|
||||
struct regulator *vcore;
|
||||
u64 dma_mask;
|
||||
unsigned int periphid;
|
||||
unsigned int irq[AMBA_NR_IRQS];
|
||||
|
|
@ -75,12 +74,6 @@ void amba_release_regions(struct amba_device *);
|
|||
#define amba_pclk_disable(d) \
|
||||
do { if (!IS_ERR((d)->pclk)) clk_disable((d)->pclk); } while (0)
|
||||
|
||||
#define amba_vcore_enable(d) \
|
||||
(IS_ERR((d)->vcore) ? 0 : regulator_enable((d)->vcore))
|
||||
|
||||
#define amba_vcore_disable(d) \
|
||||
do { if (!IS_ERR((d)->vcore)) regulator_disable((d)->vcore); } while (0)
|
||||
|
||||
/* Some drivers don't use the struct amba_device */
|
||||
#define AMBA_CONFIG_BITS(a) (((a) >> 24) & 0xff)
|
||||
#define AMBA_REV_BITS(a) (((a) >> 20) & 0x0f)
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@
|
|||
#ifndef _SSP_PL022_H
|
||||
#define _SSP_PL022_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
* whether SSP is in loopback mode or not
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -426,14 +426,10 @@ struct request_queue {
|
|||
(1 << QUEUE_FLAG_SAME_COMP) | \
|
||||
(1 << QUEUE_FLAG_ADD_RANDOM))
|
||||
|
||||
static inline int queue_is_locked(struct request_queue *q)
|
||||
static inline void queue_lockdep_assert_held(struct request_queue *q)
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
spinlock_t *lock = q->queue_lock;
|
||||
return lock && spin_is_locked(lock);
|
||||
#else
|
||||
return 1;
|
||||
#endif
|
||||
if (q->queue_lock)
|
||||
lockdep_assert_held(q->queue_lock);
|
||||
}
|
||||
|
||||
static inline void queue_flag_set_unlocked(unsigned int flag,
|
||||
|
|
@ -445,7 +441,7 @@ static inline void queue_flag_set_unlocked(unsigned int flag,
|
|||
static inline int queue_flag_test_and_clear(unsigned int flag,
|
||||
struct request_queue *q)
|
||||
{
|
||||
WARN_ON_ONCE(!queue_is_locked(q));
|
||||
queue_lockdep_assert_held(q);
|
||||
|
||||
if (test_bit(flag, &q->queue_flags)) {
|
||||
__clear_bit(flag, &q->queue_flags);
|
||||
|
|
@ -458,7 +454,7 @@ static inline int queue_flag_test_and_clear(unsigned int flag,
|
|||
static inline int queue_flag_test_and_set(unsigned int flag,
|
||||
struct request_queue *q)
|
||||
{
|
||||
WARN_ON_ONCE(!queue_is_locked(q));
|
||||
queue_lockdep_assert_held(q);
|
||||
|
||||
if (!test_bit(flag, &q->queue_flags)) {
|
||||
__set_bit(flag, &q->queue_flags);
|
||||
|
|
@ -470,7 +466,7 @@ static inline int queue_flag_test_and_set(unsigned int flag,
|
|||
|
||||
static inline void queue_flag_set(unsigned int flag, struct request_queue *q)
|
||||
{
|
||||
WARN_ON_ONCE(!queue_is_locked(q));
|
||||
queue_lockdep_assert_held(q);
|
||||
__set_bit(flag, &q->queue_flags);
|
||||
}
|
||||
|
||||
|
|
@ -487,7 +483,7 @@ static inline int queue_in_flight(struct request_queue *q)
|
|||
|
||||
static inline void queue_flag_clear(unsigned int flag, struct request_queue *q)
|
||||
{
|
||||
WARN_ON_ONCE(!queue_is_locked(q));
|
||||
queue_lockdep_assert_held(q);
|
||||
__clear_bit(flag, &q->queue_flags);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -974,6 +974,7 @@ int dma_async_device_register(struct dma_device *device);
|
|||
void dma_async_device_unregister(struct dma_device *device);
|
||||
void dma_run_dependencies(struct dma_async_tx_descriptor *tx);
|
||||
struct dma_chan *dma_find_channel(enum dma_transaction_type tx_type);
|
||||
struct dma_chan *net_dma_find_channel(void);
|
||||
#define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y)
|
||||
|
||||
/* --- Helper iov-locking functions --- */
|
||||
|
|
|
|||
|
|
@ -593,7 +593,7 @@ struct fuse_dirent {
|
|||
__u64 off;
|
||||
__u32 namelen;
|
||||
__u32 type;
|
||||
char name[0];
|
||||
char name[];
|
||||
};
|
||||
|
||||
#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
|
||||
|
|
|
|||
|
|
@ -666,23 +666,11 @@ struct twl4030_codec_data {
|
|||
unsigned int check_defaults:1;
|
||||
unsigned int reset_registers:1;
|
||||
unsigned int hs_extmute:1;
|
||||
u16 hs_left_step;
|
||||
u16 hs_right_step;
|
||||
u16 hf_left_step;
|
||||
u16 hf_right_step;
|
||||
void (*set_hs_extmute)(int mute);
|
||||
};
|
||||
|
||||
struct twl4030_vibra_data {
|
||||
unsigned int coexist;
|
||||
|
||||
/* twl6040 */
|
||||
unsigned int vibldrv_res; /* left driver resistance */
|
||||
unsigned int vibrdrv_res; /* right driver resistance */
|
||||
unsigned int viblmotor_res; /* left motor resistance */
|
||||
unsigned int vibrmotor_res; /* right motor resistance */
|
||||
int vddvibl_uV; /* VDDVIBL volt, set 0 for fixed reg */
|
||||
int vddvibr_uV; /* VDDVIBR volt, set 0 for fixed reg */
|
||||
};
|
||||
|
||||
struct twl4030_audio_data {
|
||||
|
|
|
|||
|
|
@ -263,6 +263,11 @@ static inline void irqd_clr_chained_irq_inprogress(struct irq_data *d)
|
|||
d->state_use_accessors &= ~IRQD_IRQ_INPROGRESS;
|
||||
}
|
||||
|
||||
static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d)
|
||||
{
|
||||
return d->hwirq;
|
||||
}
|
||||
|
||||
/**
|
||||
* struct irq_chip - hardware interrupt chip descriptor
|
||||
*
|
||||
|
|
|
|||
|
|
@ -42,12 +42,6 @@ struct of_device_id;
|
|||
/* Number of irqs reserved for a legacy isa controller */
|
||||
#define NUM_ISA_INTERRUPTS 16
|
||||
|
||||
/* This type is the placeholder for a hardware interrupt number. It has to
|
||||
* be big enough to enclose whatever representation is used by a given
|
||||
* platform.
|
||||
*/
|
||||
typedef unsigned long irq_hw_number_t;
|
||||
|
||||
/**
|
||||
* struct irq_domain_ops - Methods for irq_domain objects
|
||||
* @match: Match an interrupt controller device node to a host, returns
|
||||
|
|
@ -104,6 +98,9 @@ struct irq_domain {
|
|||
unsigned int size;
|
||||
unsigned int *revmap;
|
||||
} linear;
|
||||
struct {
|
||||
unsigned int max_irq;
|
||||
} nomap;
|
||||
struct radix_tree_root tree;
|
||||
} revmap_data;
|
||||
const struct irq_domain_ops *ops;
|
||||
|
|
@ -126,6 +123,7 @@ struct irq_domain *irq_domain_add_linear(struct device_node *of_node,
|
|||
const struct irq_domain_ops *ops,
|
||||
void *host_data);
|
||||
struct irq_domain *irq_domain_add_nomap(struct device_node *of_node,
|
||||
unsigned int max_irq,
|
||||
const struct irq_domain_ops *ops,
|
||||
void *host_data);
|
||||
struct irq_domain *irq_domain_add_tree(struct device_node *of_node,
|
||||
|
|
@ -134,7 +132,6 @@ struct irq_domain *irq_domain_add_tree(struct device_node *of_node,
|
|||
|
||||
extern struct irq_domain *irq_find_host(struct device_node *node);
|
||||
extern void irq_set_default_host(struct irq_domain *host);
|
||||
extern void irq_set_virq_count(unsigned int count);
|
||||
|
||||
static inline struct irq_domain *irq_domain_add_legacy_isa(
|
||||
struct device_node *of_node,
|
||||
|
|
@ -146,7 +143,6 @@ static inline struct irq_domain *irq_domain_add_legacy_isa(
|
|||
}
|
||||
extern struct irq_domain *irq_find_host(struct device_node *node);
|
||||
extern void irq_set_default_host(struct irq_domain *host);
|
||||
extern void irq_set_virq_count(unsigned int count);
|
||||
|
||||
|
||||
extern unsigned int irq_create_mapping(struct irq_domain *host,
|
||||
|
|
|
|||
|
|
@ -4,29 +4,43 @@
|
|||
#include <generated/autoconf.h>
|
||||
|
||||
/*
|
||||
* Helper macros to use CONFIG_ options in C expressions. Note that
|
||||
* Helper macros to use CONFIG_ options in C/CPP expressions. Note that
|
||||
* these only work with boolean and tristate options.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Getting something that works in C and CPP for an arg that may or may
|
||||
* not be defined is tricky. Here, if we have "#define CONFIG_BOOGER 1"
|
||||
* we match on the placeholder define, insert the "0," for arg1 and generate
|
||||
* the triplet (0, 1, 0). Then the last step cherry picks the 2nd arg (a one).
|
||||
* When CONFIG_BOOGER is not defined, we generate a (... 1, 0) pair, and when
|
||||
* the last step cherry picks the 2nd arg, we get a zero.
|
||||
*/
|
||||
#define __ARG_PLACEHOLDER_1 0,
|
||||
#define config_enabled(cfg) _config_enabled(cfg)
|
||||
#define _config_enabled(value) __config_enabled(__ARG_PLACEHOLDER_##value)
|
||||
#define __config_enabled(arg1_or_junk) ___config_enabled(arg1_or_junk 1, 0)
|
||||
#define ___config_enabled(__ignored, val, ...) val
|
||||
|
||||
/*
|
||||
* IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
|
||||
* 0 otherwise.
|
||||
*
|
||||
*/
|
||||
#define IS_ENABLED(option) \
|
||||
(__enabled_ ## option || __enabled_ ## option ## _MODULE)
|
||||
(config_enabled(option) || config_enabled(option##_MODULE))
|
||||
|
||||
/*
|
||||
* IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
|
||||
* otherwise. For boolean options, this is equivalent to
|
||||
* IS_ENABLED(CONFIG_FOO).
|
||||
*/
|
||||
#define IS_BUILTIN(option) __enabled_ ## option
|
||||
#define IS_BUILTIN(option) config_enabled(option)
|
||||
|
||||
/*
|
||||
* IS_MODULE(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'm', 0
|
||||
* otherwise.
|
||||
*/
|
||||
#define IS_MODULE(option) __enabled_ ## option ## _MODULE
|
||||
#define IS_MODULE(option) config_enabled(option##_MODULE)
|
||||
|
||||
#endif /* __LINUX_KCONFIG_H */
|
||||
|
|
|
|||
|
|
@ -596,6 +596,7 @@ void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id);
|
|||
|
||||
#ifdef CONFIG_IOMMU_API
|
||||
int kvm_iommu_map_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
|
||||
void kvm_iommu_unmap_pages(struct kvm *kvm, struct kvm_memory_slot *slot);
|
||||
int kvm_iommu_map_guest(struct kvm *kvm);
|
||||
int kvm_iommu_unmap_guest(struct kvm *kvm);
|
||||
int kvm_assign_device(struct kvm *kvm,
|
||||
|
|
@ -609,6 +610,11 @@ static inline int kvm_iommu_map_pages(struct kvm *kvm,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
|
||||
struct kvm_memory_slot *slot)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int kvm_iommu_map_guest(struct kvm *kvm)
|
||||
{
|
||||
return -ENODEV;
|
||||
|
|
|
|||
|
|
@ -8,70 +8,6 @@
|
|||
#ifndef __MFD_DB5500_PRCMU_H
|
||||
#define __MFD_DB5500_PRCMU_H
|
||||
|
||||
#ifdef CONFIG_MFD_DB5500_PRCMU
|
||||
|
||||
void db5500_prcmu_early_init(void);
|
||||
int db5500_prcmu_set_epod(u16 epod_id, u8 epod_state);
|
||||
int db5500_prcmu_set_display_clocks(void);
|
||||
int db5500_prcmu_disable_dsipll(void);
|
||||
int db5500_prcmu_enable_dsipll(void);
|
||||
int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
|
||||
int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size);
|
||||
void db5500_prcmu_enable_wakeups(u32 wakeups);
|
||||
int db5500_prcmu_request_clock(u8 clock, bool enable);
|
||||
void db5500_prcmu_config_abb_event_readout(u32 abb_events);
|
||||
void db5500_prcmu_get_abb_event_buffer(void __iomem **buf);
|
||||
int prcmu_resetout(u8 resoutn, u8 state);
|
||||
int db5500_prcmu_set_power_state(u8 state, bool keep_ulp_clk,
|
||||
bool keep_ap_pll);
|
||||
int db5500_prcmu_config_esram0_deep_sleep(u8 state);
|
||||
void db5500_prcmu_system_reset(u16 reset_code);
|
||||
u16 db5500_prcmu_get_reset_code(void);
|
||||
bool db5500_prcmu_is_ac_wake_requested(void);
|
||||
int db5500_prcmu_set_arm_opp(u8 opp);
|
||||
int db5500_prcmu_get_arm_opp(void);
|
||||
|
||||
#else /* !CONFIG_UX500_SOC_DB5500 */
|
||||
|
||||
static inline void db5500_prcmu_early_init(void) {}
|
||||
|
||||
static inline int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_request_clock(u8 clock, bool enable)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_set_display_clocks(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_disable_dsipll(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_enable_dsipll(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_config_esram0_deep_sleep(u8 state)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void db5500_prcmu_enable_wakeups(u32 wakeups) {}
|
||||
|
||||
static inline int prcmu_resetout(u8 resoutn, u8 state)
|
||||
{
|
||||
return 0;
|
||||
|
|
@ -82,8 +18,10 @@ static inline int db5500_prcmu_set_epod(u16 epod_id, u8 epod_state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void db5500_prcmu_get_abb_event_buffer(void __iomem **buf) {}
|
||||
static inline void db5500_prcmu_config_abb_event_readout(u32 abb_events) {}
|
||||
static inline int db5500_prcmu_request_clock(u8 clock, bool enable)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_set_power_state(u8 state, bool keep_ulp_clk,
|
||||
bool keep_ap_pll)
|
||||
|
|
@ -91,7 +29,10 @@ static inline int db5500_prcmu_set_power_state(u8 state, bool keep_ulp_clk,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void db5500_prcmu_system_reset(u16 reset_code) {}
|
||||
static inline int db5500_prcmu_config_esram0_deep_sleep(u8 state)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u16 db5500_prcmu_get_reset_code(void)
|
||||
{
|
||||
|
|
@ -113,6 +54,51 @@ static inline int db5500_prcmu_get_arm_opp(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void db5500_prcmu_config_abb_event_readout(u32 abb_events) {}
|
||||
|
||||
static inline void db5500_prcmu_get_abb_event_buffer(void __iomem **buf) {}
|
||||
|
||||
static inline void db5500_prcmu_system_reset(u16 reset_code) {}
|
||||
|
||||
static inline void db5500_prcmu_enable_wakeups(u32 wakeups) {}
|
||||
|
||||
#ifdef CONFIG_MFD_DB5500_PRCMU
|
||||
|
||||
void db5500_prcmu_early_init(void);
|
||||
int db5500_prcmu_set_display_clocks(void);
|
||||
int db5500_prcmu_disable_dsipll(void);
|
||||
int db5500_prcmu_enable_dsipll(void);
|
||||
int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
|
||||
int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size);
|
||||
|
||||
#else /* !CONFIG_UX500_SOC_DB5500 */
|
||||
|
||||
static inline void db5500_prcmu_early_init(void) {}
|
||||
|
||||
static inline int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_set_display_clocks(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_disable_dsipll(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int db5500_prcmu_enable_dsipll(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MFD_DB5500_PRCMU */
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
#define RC5T583_MAX_REGS 0xF8
|
||||
|
||||
|
|
@ -279,14 +280,44 @@ struct rc5t583_platform_data {
|
|||
bool enable_shutdown;
|
||||
};
|
||||
|
||||
int rc5t583_write(struct device *dev, u8 reg, uint8_t val);
|
||||
int rc5t583_read(struct device *dev, uint8_t reg, uint8_t *val);
|
||||
int rc5t583_set_bits(struct device *dev, unsigned int reg,
|
||||
unsigned int bit_mask);
|
||||
int rc5t583_clear_bits(struct device *dev, unsigned int reg,
|
||||
unsigned int bit_mask);
|
||||
int rc5t583_update(struct device *dev, unsigned int reg,
|
||||
unsigned int val, unsigned int mask);
|
||||
static inline int rc5t583_write(struct device *dev, uint8_t reg, uint8_t val)
|
||||
{
|
||||
struct rc5t583 *rc5t583 = dev_get_drvdata(dev);
|
||||
return regmap_write(rc5t583->regmap, reg, val);
|
||||
}
|
||||
|
||||
static inline int rc5t583_read(struct device *dev, uint8_t reg, uint8_t *val)
|
||||
{
|
||||
struct rc5t583 *rc5t583 = dev_get_drvdata(dev);
|
||||
unsigned int ival;
|
||||
int ret;
|
||||
ret = regmap_read(rc5t583->regmap, reg, &ival);
|
||||
if (!ret)
|
||||
*val = (uint8_t)ival;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int rc5t583_set_bits(struct device *dev, unsigned int reg,
|
||||
unsigned int bit_mask)
|
||||
{
|
||||
struct rc5t583 *rc5t583 = dev_get_drvdata(dev);
|
||||
return regmap_update_bits(rc5t583->regmap, reg, bit_mask, bit_mask);
|
||||
}
|
||||
|
||||
static inline int rc5t583_clear_bits(struct device *dev, unsigned int reg,
|
||||
unsigned int bit_mask)
|
||||
{
|
||||
struct rc5t583 *rc5t583 = dev_get_drvdata(dev);
|
||||
return regmap_update_bits(rc5t583->regmap, reg, bit_mask, 0);
|
||||
}
|
||||
|
||||
static inline int rc5t583_update(struct device *dev, unsigned int reg,
|
||||
unsigned int val, unsigned int mask)
|
||||
{
|
||||
struct rc5t583 *rc5t583 = dev_get_drvdata(dev);
|
||||
return regmap_update_bits(rc5t583->regmap, reg, mask, val);
|
||||
}
|
||||
|
||||
int rc5t583_ext_power_req_config(struct device *dev, int deepsleep_id,
|
||||
int ext_pwr_req, int deepsleep_slot_nr);
|
||||
int rc5t583_irq_init(struct rc5t583 *rc5t583, int irq, int irq_base);
|
||||
|
|
|
|||
|
|
@ -174,8 +174,35 @@
|
|||
#define TWL6040_SYSCLK_SEL_LPPLL 0
|
||||
#define TWL6040_SYSCLK_SEL_HPPLL 1
|
||||
|
||||
struct twl6040_codec_data {
|
||||
u16 hs_left_step;
|
||||
u16 hs_right_step;
|
||||
u16 hf_left_step;
|
||||
u16 hf_right_step;
|
||||
};
|
||||
|
||||
struct twl6040_vibra_data {
|
||||
unsigned int vibldrv_res; /* left driver resistance */
|
||||
unsigned int vibrdrv_res; /* right driver resistance */
|
||||
unsigned int viblmotor_res; /* left motor resistance */
|
||||
unsigned int vibrmotor_res; /* right motor resistance */
|
||||
int vddvibl_uV; /* VDDVIBL volt, set 0 for fixed reg */
|
||||
int vddvibr_uV; /* VDDVIBR volt, set 0 for fixed reg */
|
||||
};
|
||||
|
||||
struct twl6040_platform_data {
|
||||
int audpwron_gpio; /* audio power-on gpio */
|
||||
unsigned int irq_base;
|
||||
|
||||
struct twl6040_codec_data *codec;
|
||||
struct twl6040_vibra_data *vibra;
|
||||
};
|
||||
|
||||
struct regmap;
|
||||
|
||||
struct twl6040 {
|
||||
struct device *dev;
|
||||
struct regmap *regmap;
|
||||
struct mutex mutex;
|
||||
struct mutex io_mutex;
|
||||
struct mutex irq_mutex;
|
||||
|
|
|
|||
|
|
@ -1393,29 +1393,20 @@ extern int install_special_mapping(struct mm_struct *mm,
|
|||
|
||||
extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
|
||||
|
||||
extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
|
||||
unsigned long len, unsigned long prot,
|
||||
unsigned long flag, unsigned long pgoff);
|
||||
extern unsigned long mmap_region(struct file *file, unsigned long addr,
|
||||
unsigned long len, unsigned long flags,
|
||||
vm_flags_t vm_flags, unsigned long pgoff);
|
||||
|
||||
static inline unsigned long do_mmap(struct file *file, unsigned long addr,
|
||||
unsigned long len, unsigned long prot,
|
||||
unsigned long flag, unsigned long offset)
|
||||
{
|
||||
unsigned long ret = -EINVAL;
|
||||
if ((offset + PAGE_ALIGN(len)) < offset)
|
||||
goto out;
|
||||
if (!(offset & ~PAGE_MASK))
|
||||
ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> PAGE_SHIFT);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
extern unsigned long do_mmap(struct file *, unsigned long,
|
||||
unsigned long, unsigned long,
|
||||
unsigned long, unsigned long);
|
||||
extern int do_munmap(struct mm_struct *, unsigned long, size_t);
|
||||
|
||||
extern unsigned long do_brk(unsigned long, unsigned long);
|
||||
/* These take the mm semaphore themselves */
|
||||
extern unsigned long vm_brk(unsigned long, unsigned long);
|
||||
extern int vm_munmap(unsigned long, size_t);
|
||||
extern unsigned long vm_mmap(struct file *, unsigned long,
|
||||
unsigned long, unsigned long,
|
||||
unsigned long, unsigned long);
|
||||
|
||||
/* truncate.c */
|
||||
extern void truncate_inode_pages(struct address_space *, loff_t);
|
||||
|
|
|
|||
|
|
@ -481,7 +481,7 @@ struct mmc_driver {
|
|||
struct device_driver drv;
|
||||
int (*probe)(struct mmc_card *);
|
||||
void (*remove)(struct mmc_card *);
|
||||
int (*suspend)(struct mmc_card *, pm_message_t);
|
||||
int (*suspend)(struct mmc_card *);
|
||||
int (*resume)(struct mmc_card *);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -287,7 +287,17 @@ extern unsigned int ip6t_do_table(struct sk_buff *skb,
|
|||
struct xt_table *table);
|
||||
|
||||
/* Check for an extension */
|
||||
extern int ip6t_ext_hdr(u8 nexthdr);
|
||||
static inline int
|
||||
ip6t_ext_hdr(u8 nexthdr)
|
||||
{ return (nexthdr == IPPROTO_HOPOPTS) ||
|
||||
(nexthdr == IPPROTO_ROUTING) ||
|
||||
(nexthdr == IPPROTO_FRAGMENT) ||
|
||||
(nexthdr == IPPROTO_ESP) ||
|
||||
(nexthdr == IPPROTO_AH) ||
|
||||
(nexthdr == IPPROTO_NONE) ||
|
||||
(nexthdr == IPPROTO_DSTOPTS);
|
||||
}
|
||||
|
||||
/* find specified header and get offset to it */
|
||||
extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset,
|
||||
int target, unsigned short *fragoff);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
header-y += cld.h
|
||||
header-y += debug.h
|
||||
header-y += export.h
|
||||
header-y += nfsfh.h
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
#ifndef __LINUX_PINCTRL_MACHINE_H
|
||||
#define __LINUX_PINCTRL_MACHINE_H
|
||||
|
||||
#include <linux/bug.h>
|
||||
|
||||
#include "pinctrl-state.h"
|
||||
|
||||
enum pinctrl_map_type {
|
||||
|
|
@ -148,7 +150,7 @@ struct pinctrl_map {
|
|||
#define PIN_MAP_CONFIGS_GROUP_HOG_DEFAULT(dev, grp, cfgs) \
|
||||
PIN_MAP_CONFIGS_GROUP(dev, PINCTRL_STATE_DEFAULT, dev, grp, cfgs)
|
||||
|
||||
#ifdef CONFIG_PINMUX
|
||||
#ifdef CONFIG_PINCTRL
|
||||
|
||||
extern int pinctrl_register_mappings(struct pinctrl_map const *map,
|
||||
unsigned num_maps);
|
||||
|
|
|
|||
|
|
@ -357,7 +357,7 @@ struct uart_port {
|
|||
#define UPF_CONS_FLOW ((__force upf_t) (1 << 23))
|
||||
#define UPF_SHARE_IRQ ((__force upf_t) (1 << 24))
|
||||
#define UPF_EXAR_EFR ((__force upf_t) (1 << 25))
|
||||
#define UPF_IIR_ONCE ((__force upf_t) (1 << 26))
|
||||
#define UPF_BUG_THRE ((__force upf_t) (1 << 26))
|
||||
/* The exact UART type is known and should not be probed. */
|
||||
#define UPF_FIXED_TYPE ((__force upf_t) (1 << 27))
|
||||
#define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28))
|
||||
|
|
|
|||
|
|
@ -481,6 +481,7 @@ struct sk_buff {
|
|||
union {
|
||||
__u32 mark;
|
||||
__u32 dropcount;
|
||||
__u32 avail_size;
|
||||
};
|
||||
|
||||
sk_buff_data_t transport_header;
|
||||
|
|
@ -1365,6 +1366,18 @@ static inline int skb_tailroom(const struct sk_buff *skb)
|
|||
return skb_is_nonlinear(skb) ? 0 : skb->end - skb->tail;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_availroom - bytes at buffer end
|
||||
* @skb: buffer to check
|
||||
*
|
||||
* Return the number of bytes of free space at the tail of an sk_buff
|
||||
* allocated by sk_stream_alloc()
|
||||
*/
|
||||
static inline int skb_availroom(const struct sk_buff *skb)
|
||||
{
|
||||
return skb_is_nonlinear(skb) ? 0 : skb->avail_size - skb->len;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_reserve - adjust headroom
|
||||
* @skb: buffer to alter
|
||||
|
|
|
|||
|
|
@ -3,15 +3,11 @@
|
|||
|
||||
#include <linux/compiler.h>
|
||||
|
||||
#undef NULL
|
||||
#if defined(__cplusplus)
|
||||
#define NULL 0
|
||||
#else
|
||||
#define NULL ((void *)0)
|
||||
#endif
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#undef NULL
|
||||
#define NULL ((void *)0)
|
||||
|
||||
enum {
|
||||
false = 0,
|
||||
true = 1
|
||||
|
|
|
|||
|
|
@ -210,6 +210,12 @@ typedef u32 phys_addr_t;
|
|||
|
||||
typedef phys_addr_t resource_size_t;
|
||||
|
||||
/*
|
||||
* This type is the placeholder for a hardware interrupt number. It has to be
|
||||
* big enough to enclose whatever representation is used by a given platform.
|
||||
*/
|
||||
typedef unsigned long irq_hw_number_t;
|
||||
|
||||
typedef struct {
|
||||
int counter;
|
||||
} atomic_t;
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ struct usb_phy {
|
|||
|
||||
struct usb_otg *otg;
|
||||
|
||||
struct device *io_dev;
|
||||
struct usb_phy_io_ops *io_ops;
|
||||
void __iomem *io_priv;
|
||||
|
||||
|
|
|
|||
|
|
@ -28,13 +28,6 @@
|
|||
/* parity check flag */
|
||||
#define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
|
||||
|
||||
enum port_dev_state {
|
||||
PORT_UNREGISTERED,
|
||||
PORT_REGISTERING,
|
||||
PORT_REGISTERED,
|
||||
PORT_UNREGISTERING,
|
||||
};
|
||||
|
||||
/* USB serial flags */
|
||||
#define USB_SERIAL_WRITE_BUSY 0
|
||||
|
||||
|
|
@ -124,7 +117,6 @@ struct usb_serial_port {
|
|||
char throttle_req;
|
||||
unsigned long sysrq; /* sysrq timeout */
|
||||
struct device dev;
|
||||
enum port_dev_state dev_state;
|
||||
};
|
||||
#define to_usb_serial_port(d) container_of(d, struct usb_serial_port, dev)
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,8 @@
|
|||
*/
|
||||
#define VGA_DEFAULT_DEVICE (NULL)
|
||||
|
||||
struct pci_dev;
|
||||
|
||||
/* For use by clients */
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue