Merge branches 'for-3.18/always-poll-quirk', 'for-3.18/logitech', 'for-3.18/picolcd', 'for-3.18/rmi', 'for-3.18/sony', 'for-3.18/uhid', 'for-3.18/upstream' and 'for-3.18/wacom' into for-linus
This commit is contained in:
@@ -110,9 +110,6 @@ static inline int __gpio_to_irq(unsigned gpio)
|
||||
return gpiod_to_irq(gpio_to_desc(gpio));
|
||||
}
|
||||
|
||||
extern int gpio_lock_as_irq(struct gpio_chip *chip, unsigned int offset);
|
||||
extern void gpio_unlock_as_irq(struct gpio_chip *chip, unsigned int offset);
|
||||
|
||||
extern int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
|
||||
extern int gpio_request_array(const struct gpio *array, size_t num);
|
||||
extern void gpio_free_array(const struct gpio *array, size_t num);
|
||||
|
||||
@@ -19,6 +19,14 @@ pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
|
||||
return dma_alloc_coherent(hwdev == NULL ? NULL : &hwdev->dev, size, dma_handle, GFP_ATOMIC);
|
||||
}
|
||||
|
||||
static inline void *
|
||||
pci_zalloc_consistent(struct pci_dev *hwdev, size_t size,
|
||||
dma_addr_t *dma_handle)
|
||||
{
|
||||
return dma_zalloc_coherent(hwdev == NULL ? NULL : &hwdev->dev,
|
||||
size, dma_handle, GFP_ATOMIC);
|
||||
}
|
||||
|
||||
static inline void
|
||||
pci_free_consistent(struct pci_dev *hwdev, size_t size,
|
||||
void *vaddr, dma_addr_t dma_handle)
|
||||
|
||||
+15
-74
@@ -152,8 +152,6 @@ int drm_err(const char *func, const char *format, ...);
|
||||
also include looping detection. */
|
||||
|
||||
#define DRM_MAGIC_HASH_ORDER 4 /**< Size of key hash table. Must be power of 2. */
|
||||
#define DRM_KERNEL_CONTEXT 0 /**< Change drm_resctx if changed */
|
||||
#define DRM_RESERVED_CONTEXTS 1 /**< Change drm_resctx if changed */
|
||||
|
||||
#define DRM_MAP_HASH_OFFSET 0x10000000
|
||||
|
||||
@@ -347,18 +345,6 @@ struct drm_waitlist {
|
||||
spinlock_t write_lock;
|
||||
};
|
||||
|
||||
struct drm_freelist {
|
||||
int initialized; /**< Freelist in use */
|
||||
atomic_t count; /**< Number of free buffers */
|
||||
struct drm_buf *next; /**< End pointer */
|
||||
|
||||
wait_queue_head_t waiting; /**< Processes waiting on free bufs */
|
||||
int low_mark; /**< Low water mark */
|
||||
int high_mark; /**< High water mark */
|
||||
atomic_t wfh; /**< If waiting for high mark */
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
||||
typedef struct drm_dma_handle {
|
||||
dma_addr_t busaddr;
|
||||
void *vaddr;
|
||||
@@ -376,7 +362,8 @@ struct drm_buf_entry {
|
||||
int page_order;
|
||||
struct drm_dma_handle **seglist;
|
||||
|
||||
struct drm_freelist freelist;
|
||||
int low_mark; /**< Low water mark */
|
||||
int high_mark; /**< High water mark */
|
||||
};
|
||||
|
||||
/* Event queued up for userspace to read */
|
||||
@@ -397,7 +384,6 @@ struct drm_prime_file_private {
|
||||
|
||||
/** File private data */
|
||||
struct drm_file {
|
||||
unsigned always_authenticated :1;
|
||||
unsigned authenticated :1;
|
||||
/* Whether we're master for a minor. Protected by master_mutex */
|
||||
unsigned is_master :1;
|
||||
@@ -442,23 +428,6 @@ struct drm_file {
|
||||
struct drm_prime_file_private prime;
|
||||
};
|
||||
|
||||
/** Wait queue */
|
||||
struct drm_queue {
|
||||
atomic_t use_count; /**< Outstanding uses (+1) */
|
||||
atomic_t finalization; /**< Finalization in progress */
|
||||
atomic_t block_count; /**< Count of processes waiting */
|
||||
atomic_t block_read; /**< Queue blocked for reads */
|
||||
wait_queue_head_t read_queue; /**< Processes waiting on block_read */
|
||||
atomic_t block_write; /**< Queue blocked for writes */
|
||||
wait_queue_head_t write_queue; /**< Processes waiting on block_write */
|
||||
atomic_t total_queued; /**< Total queued statistic */
|
||||
atomic_t total_flushed; /**< Total flushes statistic */
|
||||
atomic_t total_locks; /**< Total locks statistics */
|
||||
enum drm_ctx_flags flags; /**< Context preserving and 2D-only */
|
||||
struct drm_waitlist waitlist; /**< Pending buffers */
|
||||
wait_queue_head_t flush_queue; /**< Processes waiting until flush */
|
||||
};
|
||||
|
||||
/**
|
||||
* Lock data.
|
||||
*/
|
||||
@@ -567,15 +536,6 @@ struct drm_map_list {
|
||||
struct drm_master *master;
|
||||
};
|
||||
|
||||
/**
|
||||
* Context handle list
|
||||
*/
|
||||
struct drm_ctx_list {
|
||||
struct list_head head; /**< list head */
|
||||
drm_context_t handle; /**< context handle */
|
||||
struct drm_file *tag; /**< associated fd private data */
|
||||
};
|
||||
|
||||
/* location of GART table */
|
||||
#define DRM_ATI_GART_MAIN 1
|
||||
#define DRM_ATI_GART_FB 2
|
||||
@@ -1218,7 +1178,6 @@ extern bool drm_ioctl_flags(unsigned int nr, unsigned int *flags);
|
||||
/* Device support (drm_fops.h) */
|
||||
extern struct mutex drm_global_mutex;
|
||||
extern int drm_open(struct inode *inode, struct file *filp);
|
||||
extern int drm_stub_open(struct inode *inode, struct file *filp);
|
||||
extern ssize_t drm_read(struct file *filp, char __user *buffer,
|
||||
size_t count, loff_t *offset);
|
||||
extern int drm_release(struct inode *inode, struct file *filp);
|
||||
@@ -1256,29 +1215,6 @@ extern int drm_setversion(struct drm_device *dev, void *data,
|
||||
extern int drm_noop(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
/* Context IOCTL support (drm_context.h) */
|
||||
extern int drm_resctx(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_addctx(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_getctx(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_switchctx(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_newctx(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_rmctx(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
extern int drm_ctxbitmap_init(struct drm_device *dev);
|
||||
extern void drm_ctxbitmap_cleanup(struct drm_device *dev);
|
||||
extern void drm_ctxbitmap_free(struct drm_device *dev, int ctx_handle);
|
||||
|
||||
extern int drm_setsareactx(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
extern int drm_getsareactx(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
/* Authentication IOCTL support (drm_auth.h) */
|
||||
extern int drm_getmagic(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
@@ -1398,17 +1334,12 @@ extern void drm_master_put(struct drm_master **master);
|
||||
extern void drm_put_dev(struct drm_device *dev);
|
||||
extern void drm_unplug_dev(struct drm_device *dev);
|
||||
extern unsigned int drm_debug;
|
||||
extern unsigned int drm_rnodes;
|
||||
extern unsigned int drm_universal_planes;
|
||||
|
||||
extern unsigned int drm_vblank_offdelay;
|
||||
extern unsigned int drm_timestamp_precision;
|
||||
extern unsigned int drm_timestamp_monotonic;
|
||||
|
||||
extern struct class *drm_class;
|
||||
extern struct dentry *drm_debugfs_root;
|
||||
|
||||
extern struct idr drm_minors_idr;
|
||||
|
||||
extern struct drm_local_map *drm_getsarea(struct drm_device *dev);
|
||||
|
||||
@@ -1422,6 +1353,8 @@ extern int drm_debugfs_create_files(const struct drm_info_list *files,
|
||||
extern int drm_debugfs_remove_files(const struct drm_info_list *files,
|
||||
int count, struct drm_minor *minor);
|
||||
extern int drm_debugfs_cleanup(struct drm_minor *minor);
|
||||
extern int drm_debugfs_connector_add(struct drm_connector *connector);
|
||||
extern void drm_debugfs_connector_remove(struct drm_connector *connector);
|
||||
#else
|
||||
static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id,
|
||||
struct dentry *root)
|
||||
@@ -1446,6 +1379,15 @@ static inline int drm_debugfs_cleanup(struct drm_minor *minor)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int drm_debugfs_connector_add(struct drm_connector *connector)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline void drm_debugfs_connector_remove(struct drm_connector *connector)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* Info file support */
|
||||
@@ -1515,9 +1457,8 @@ extern int drm_pci_set_unique(struct drm_device *dev,
|
||||
struct drm_sysfs_class;
|
||||
extern struct class *drm_sysfs_create(struct module *owner, char *name);
|
||||
extern void drm_sysfs_destroy(void);
|
||||
extern int drm_sysfs_device_add(struct drm_minor *minor);
|
||||
extern struct device *drm_sysfs_minor_alloc(struct drm_minor *minor);
|
||||
extern void drm_sysfs_hotplug_event(struct drm_device *dev);
|
||||
extern void drm_sysfs_device_remove(struct drm_minor *minor);
|
||||
extern int drm_sysfs_connector_add(struct drm_connector *connector);
|
||||
extern void drm_sysfs_connector_remove(struct drm_connector *connector);
|
||||
|
||||
@@ -1577,7 +1518,7 @@ void drm_gem_free_mmap_offset(struct drm_gem_object *obj);
|
||||
int drm_gem_create_mmap_offset(struct drm_gem_object *obj);
|
||||
int drm_gem_create_mmap_offset_size(struct drm_gem_object *obj, size_t size);
|
||||
|
||||
struct page **drm_gem_get_pages(struct drm_gem_object *obj, gfp_t gfpmask);
|
||||
struct page **drm_gem_get_pages(struct drm_gem_object *obj);
|
||||
void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages,
|
||||
bool dirty, bool accessed);
|
||||
|
||||
|
||||
+34
-2
@@ -41,6 +41,7 @@ struct drm_framebuffer;
|
||||
struct drm_object_properties;
|
||||
struct drm_file;
|
||||
struct drm_clip_rect;
|
||||
struct device_node;
|
||||
|
||||
#define DRM_MODE_OBJECT_CRTC 0xcccccccc
|
||||
#define DRM_MODE_OBJECT_CONNECTOR 0xc0c0c0c0
|
||||
@@ -75,6 +76,14 @@ static inline uint64_t I642U64(int64_t val)
|
||||
return (uint64_t)*((uint64_t *)&val);
|
||||
}
|
||||
|
||||
/* rotation property bits */
|
||||
#define DRM_ROTATE_0 0
|
||||
#define DRM_ROTATE_90 1
|
||||
#define DRM_ROTATE_180 2
|
||||
#define DRM_ROTATE_270 3
|
||||
#define DRM_REFLECT_X 4
|
||||
#define DRM_REFLECT_Y 5
|
||||
|
||||
enum drm_connector_force {
|
||||
DRM_FORCE_UNSPECIFIED,
|
||||
DRM_FORCE_OFF,
|
||||
@@ -314,6 +323,7 @@ struct drm_crtc_funcs {
|
||||
*/
|
||||
struct drm_crtc {
|
||||
struct drm_device *dev;
|
||||
struct device_node *port;
|
||||
struct list_head head;
|
||||
|
||||
/**
|
||||
@@ -331,6 +341,10 @@ struct drm_crtc {
|
||||
struct drm_plane *primary;
|
||||
struct drm_plane *cursor;
|
||||
|
||||
/* position of cursor plane on crtc */
|
||||
int cursor_x;
|
||||
int cursor_y;
|
||||
|
||||
/* Temporary tracking of the old fb while a modeset is ongoing. Used
|
||||
* by drm_mode_set_config_internal to implement correct refcounting. */
|
||||
struct drm_framebuffer *old_fb;
|
||||
@@ -524,6 +538,8 @@ struct drm_connector {
|
||||
struct drm_property_blob *edid_blob_ptr;
|
||||
struct drm_object_properties properties;
|
||||
|
||||
struct drm_property_blob *path_blob_ptr;
|
||||
|
||||
uint8_t polled; /* DRM_CONNECTOR_POLL_* */
|
||||
|
||||
/* requested DPMS state */
|
||||
@@ -533,6 +549,7 @@ struct drm_connector {
|
||||
|
||||
/* forced on connector */
|
||||
enum drm_connector_force force;
|
||||
bool override_edid;
|
||||
uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER];
|
||||
struct drm_encoder *encoder; /* currently active encoder */
|
||||
|
||||
@@ -545,6 +562,8 @@ struct drm_connector {
|
||||
int audio_latency[2];
|
||||
int null_edid_counter; /* needed to workaround some HW bugs where we get all 0s */
|
||||
unsigned bad_edid_counter;
|
||||
|
||||
struct dentry *debugfs_entry;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -800,6 +819,7 @@ struct drm_mode_config {
|
||||
struct list_head property_blob_list;
|
||||
struct drm_property *edid_property;
|
||||
struct drm_property *dpms_property;
|
||||
struct drm_property *path_property;
|
||||
struct drm_property *plane_type_property;
|
||||
|
||||
/* DVI-I properties */
|
||||
@@ -823,6 +843,7 @@ struct drm_mode_config {
|
||||
|
||||
/* Optional properties */
|
||||
struct drm_property *scaling_mode_property;
|
||||
struct drm_property *aspect_ratio_property;
|
||||
struct drm_property *dirty_info_property;
|
||||
|
||||
/* dumb ioctl parameters */
|
||||
@@ -852,7 +873,7 @@ struct drm_prop_enum_list {
|
||||
extern int drm_crtc_init_with_planes(struct drm_device *dev,
|
||||
struct drm_crtc *crtc,
|
||||
struct drm_plane *primary,
|
||||
void *cursor,
|
||||
struct drm_plane *cursor,
|
||||
const struct drm_crtc_funcs *funcs);
|
||||
extern int drm_crtc_init(struct drm_device *dev,
|
||||
struct drm_crtc *crtc,
|
||||
@@ -878,6 +899,8 @@ extern int drm_connector_init(struct drm_device *dev,
|
||||
struct drm_connector *connector,
|
||||
const struct drm_connector_funcs *funcs,
|
||||
int connector_type);
|
||||
int drm_connector_register(struct drm_connector *connector);
|
||||
void drm_connector_unregister(struct drm_connector *connector);
|
||||
|
||||
extern void drm_connector_cleanup(struct drm_connector *connector);
|
||||
/* helper to unplug all connectors from sysfs for device */
|
||||
@@ -937,6 +960,7 @@ extern const char *drm_get_tv_select_name(int val);
|
||||
extern void drm_fb_release(struct drm_file *file_priv);
|
||||
extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group);
|
||||
extern void drm_mode_group_destroy(struct drm_mode_group *group);
|
||||
extern void drm_reinit_primary_mode_group(struct drm_device *dev);
|
||||
extern bool drm_probe_ddc(struct i2c_adapter *adapter);
|
||||
extern struct edid *drm_get_edid(struct drm_connector *connector,
|
||||
struct i2c_adapter *adapter);
|
||||
@@ -946,6 +970,8 @@ extern void drm_mode_config_init(struct drm_device *dev);
|
||||
extern void drm_mode_config_reset(struct drm_device *dev);
|
||||
extern void drm_mode_config_cleanup(struct drm_device *dev);
|
||||
|
||||
extern int drm_mode_connector_set_path_property(struct drm_connector *connector,
|
||||
char *path);
|
||||
extern int drm_mode_connector_update_edid_property(struct drm_connector *connector,
|
||||
struct edid *edid);
|
||||
|
||||
@@ -994,7 +1020,8 @@ extern struct drm_property *drm_property_create_enum(struct drm_device *dev, int
|
||||
struct drm_property *drm_property_create_bitmask(struct drm_device *dev,
|
||||
int flags, const char *name,
|
||||
const struct drm_prop_enum_list *props,
|
||||
int num_values);
|
||||
int num_props,
|
||||
uint64_t supported_bits);
|
||||
struct drm_property *drm_property_create_range(struct drm_device *dev, int flags,
|
||||
const char *name,
|
||||
uint64_t min, uint64_t max);
|
||||
@@ -1010,6 +1037,7 @@ extern int drm_mode_create_dvi_i_properties(struct drm_device *dev);
|
||||
extern int drm_mode_create_tv_properties(struct drm_device *dev, int num_formats,
|
||||
char *formats[]);
|
||||
extern int drm_mode_create_scaling_mode_property(struct drm_device *dev);
|
||||
extern int drm_mode_create_aspect_ratio_property(struct drm_device *dev);
|
||||
extern int drm_mode_create_dirty_info_property(struct drm_device *dev);
|
||||
|
||||
extern int drm_mode_connector_attach_encoder(struct drm_connector *connector,
|
||||
@@ -1100,6 +1128,10 @@ extern int drm_format_plane_cpp(uint32_t format, int plane);
|
||||
extern int drm_format_horz_chroma_subsampling(uint32_t format);
|
||||
extern int drm_format_vert_chroma_subsampling(uint32_t format);
|
||||
extern const char *drm_get_format_name(uint32_t format);
|
||||
extern struct drm_property *drm_mode_create_rotation_property(struct drm_device *dev,
|
||||
unsigned int supported_rotations);
|
||||
extern unsigned int drm_rotation_simplify(unsigned int rotation,
|
||||
unsigned int supported_rotations);
|
||||
|
||||
/* Helpers */
|
||||
|
||||
|
||||
@@ -0,0 +1,509 @@
|
||||
/*
|
||||
* Copyright © 2014 Red Hat.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
* the above copyright notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting documentation, and
|
||||
* that the name of the copyright holders not be used in advertising or
|
||||
* publicity pertaining to distribution of the software without specific,
|
||||
* written prior permission. The copyright holders make no representations
|
||||
* about the suitability of this software for any purpose. It is provided "as
|
||||
* is" without express or implied warranty.
|
||||
*
|
||||
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
||||
* OF THIS SOFTWARE.
|
||||
*/
|
||||
#ifndef _DRM_DP_MST_HELPER_H_
|
||||
#define _DRM_DP_MST_HELPER_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <drm/drm_dp_helper.h>
|
||||
|
||||
struct drm_dp_mst_branch;
|
||||
|
||||
/**
|
||||
* struct drm_dp_vcpi - Virtual Channel Payload Identifer
|
||||
* @vcpi: Virtual channel ID.
|
||||
* @pbn: Payload Bandwidth Number for this channel
|
||||
* @aligned_pbn: PBN aligned with slot size
|
||||
* @num_slots: number of slots for this PBN
|
||||
*/
|
||||
struct drm_dp_vcpi {
|
||||
int vcpi;
|
||||
int pbn;
|
||||
int aligned_pbn;
|
||||
int num_slots;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_dp_mst_port - MST port
|
||||
* @kref: reference count for this port.
|
||||
* @guid_valid: for DP 1.2 devices if we have validated the GUID.
|
||||
* @guid: guid for DP 1.2 device on this port.
|
||||
* @port_num: port number
|
||||
* @input: if this port is an input port.
|
||||
* @mcs: message capability status - DP 1.2 spec.
|
||||
* @ddps: DisplayPort Device Plug Status - DP 1.2
|
||||
* @pdt: Peer Device Type
|
||||
* @ldps: Legacy Device Plug Status
|
||||
* @dpcd_rev: DPCD revision of device on this port
|
||||
* @num_sdp_streams: Number of simultaneous streams
|
||||
* @num_sdp_stream_sinks: Number of stream sinks
|
||||
* @available_pbn: Available bandwidth for this port.
|
||||
* @next: link to next port on this branch device
|
||||
* @mstb: branch device attach below this port
|
||||
* @aux: i2c aux transport to talk to device connected to this port.
|
||||
* @parent: branch device parent of this port
|
||||
* @vcpi: Virtual Channel Payload info for this port.
|
||||
* @connector: DRM connector this port is connected to.
|
||||
* @mgr: topology manager this port lives under.
|
||||
*
|
||||
* This structure represents an MST port endpoint on a device somewhere
|
||||
* in the MST topology.
|
||||
*/
|
||||
struct drm_dp_mst_port {
|
||||
struct kref kref;
|
||||
|
||||
/* if dpcd 1.2 device is on this port - its GUID info */
|
||||
bool guid_valid;
|
||||
u8 guid[16];
|
||||
|
||||
u8 port_num;
|
||||
bool input;
|
||||
bool mcs;
|
||||
bool ddps;
|
||||
u8 pdt;
|
||||
bool ldps;
|
||||
u8 dpcd_rev;
|
||||
u8 num_sdp_streams;
|
||||
u8 num_sdp_stream_sinks;
|
||||
uint16_t available_pbn;
|
||||
struct list_head next;
|
||||
struct drm_dp_mst_branch *mstb; /* pointer to an mstb if this port has one */
|
||||
struct drm_dp_aux aux; /* i2c bus for this port? */
|
||||
struct drm_dp_mst_branch *parent;
|
||||
|
||||
struct drm_dp_vcpi vcpi;
|
||||
struct drm_connector *connector;
|
||||
struct drm_dp_mst_topology_mgr *mgr;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_dp_mst_branch - MST branch device.
|
||||
* @kref: reference count for this port.
|
||||
* @rad: Relative Address to talk to this branch device.
|
||||
* @lct: Link count total to talk to this branch device.
|
||||
* @num_ports: number of ports on the branch.
|
||||
* @msg_slots: one bit per transmitted msg slot.
|
||||
* @ports: linked list of ports on this branch.
|
||||
* @port_parent: pointer to the port parent, NULL if toplevel.
|
||||
* @mgr: topology manager for this branch device.
|
||||
* @tx_slots: transmission slots for this device.
|
||||
* @last_seqno: last sequence number used to talk to this.
|
||||
* @link_address_sent: if a link address message has been sent to this device yet.
|
||||
*
|
||||
* This structure represents an MST branch device, there is one
|
||||
* primary branch device at the root, along with any others connected
|
||||
* to downstream ports
|
||||
*/
|
||||
struct drm_dp_mst_branch {
|
||||
struct kref kref;
|
||||
u8 rad[8];
|
||||
u8 lct;
|
||||
int num_ports;
|
||||
|
||||
int msg_slots;
|
||||
struct list_head ports;
|
||||
|
||||
/* list of tx ops queue for this port */
|
||||
struct drm_dp_mst_port *port_parent;
|
||||
struct drm_dp_mst_topology_mgr *mgr;
|
||||
|
||||
/* slots are protected by mstb->mgr->qlock */
|
||||
struct drm_dp_sideband_msg_tx *tx_slots[2];
|
||||
int last_seqno;
|
||||
bool link_address_sent;
|
||||
};
|
||||
|
||||
|
||||
/* sideband msg header - not bit struct */
|
||||
struct drm_dp_sideband_msg_hdr {
|
||||
u8 lct;
|
||||
u8 lcr;
|
||||
u8 rad[8];
|
||||
bool broadcast;
|
||||
bool path_msg;
|
||||
u8 msg_len;
|
||||
bool somt;
|
||||
bool eomt;
|
||||
bool seqno;
|
||||
};
|
||||
|
||||
struct drm_dp_nak_reply {
|
||||
u8 guid[16];
|
||||
u8 reason;
|
||||
u8 nak_data;
|
||||
};
|
||||
|
||||
struct drm_dp_link_address_ack_reply {
|
||||
u8 guid[16];
|
||||
u8 nports;
|
||||
struct drm_dp_link_addr_reply_port {
|
||||
bool input_port;
|
||||
u8 peer_device_type;
|
||||
u8 port_number;
|
||||
bool mcs;
|
||||
bool ddps;
|
||||
bool legacy_device_plug_status;
|
||||
u8 dpcd_revision;
|
||||
u8 peer_guid[16];
|
||||
u8 num_sdp_streams;
|
||||
u8 num_sdp_stream_sinks;
|
||||
} ports[16];
|
||||
};
|
||||
|
||||
struct drm_dp_remote_dpcd_read_ack_reply {
|
||||
u8 port_number;
|
||||
u8 num_bytes;
|
||||
u8 bytes[255];
|
||||
};
|
||||
|
||||
struct drm_dp_remote_dpcd_write_ack_reply {
|
||||
u8 port_number;
|
||||
};
|
||||
|
||||
struct drm_dp_remote_dpcd_write_nak_reply {
|
||||
u8 port_number;
|
||||
u8 reason;
|
||||
u8 bytes_written_before_failure;
|
||||
};
|
||||
|
||||
struct drm_dp_remote_i2c_read_ack_reply {
|
||||
u8 port_number;
|
||||
u8 num_bytes;
|
||||
u8 bytes[255];
|
||||
};
|
||||
|
||||
struct drm_dp_remote_i2c_read_nak_reply {
|
||||
u8 port_number;
|
||||
u8 nak_reason;
|
||||
u8 i2c_nak_transaction;
|
||||
};
|
||||
|
||||
struct drm_dp_remote_i2c_write_ack_reply {
|
||||
u8 port_number;
|
||||
};
|
||||
|
||||
|
||||
struct drm_dp_sideband_msg_rx {
|
||||
u8 chunk[48];
|
||||
u8 msg[256];
|
||||
u8 curchunk_len;
|
||||
u8 curchunk_idx; /* chunk we are parsing now */
|
||||
u8 curchunk_hdrlen;
|
||||
u8 curlen; /* total length of the msg */
|
||||
bool have_somt;
|
||||
bool have_eomt;
|
||||
struct drm_dp_sideband_msg_hdr initial_hdr;
|
||||
};
|
||||
|
||||
|
||||
struct drm_dp_allocate_payload {
|
||||
u8 port_number;
|
||||
u8 number_sdp_streams;
|
||||
u8 vcpi;
|
||||
u16 pbn;
|
||||
u8 sdp_stream_sink[8];
|
||||
};
|
||||
|
||||
struct drm_dp_allocate_payload_ack_reply {
|
||||
u8 port_number;
|
||||
u8 vcpi;
|
||||
u16 allocated_pbn;
|
||||
};
|
||||
|
||||
struct drm_dp_connection_status_notify {
|
||||
u8 guid[16];
|
||||
u8 port_number;
|
||||
bool legacy_device_plug_status;
|
||||
bool displayport_device_plug_status;
|
||||
bool message_capability_status;
|
||||
bool input_port;
|
||||
u8 peer_device_type;
|
||||
};
|
||||
|
||||
struct drm_dp_remote_dpcd_read {
|
||||
u8 port_number;
|
||||
u32 dpcd_address;
|
||||
u8 num_bytes;
|
||||
};
|
||||
|
||||
struct drm_dp_remote_dpcd_write {
|
||||
u8 port_number;
|
||||
u32 dpcd_address;
|
||||
u8 num_bytes;
|
||||
u8 *bytes;
|
||||
};
|
||||
|
||||
struct drm_dp_remote_i2c_read {
|
||||
u8 num_transactions;
|
||||
u8 port_number;
|
||||
struct {
|
||||
u8 i2c_dev_id;
|
||||
u8 num_bytes;
|
||||
u8 *bytes;
|
||||
u8 no_stop_bit;
|
||||
u8 i2c_transaction_delay;
|
||||
} transactions[4];
|
||||
u8 read_i2c_device_id;
|
||||
u8 num_bytes_read;
|
||||
};
|
||||
|
||||
struct drm_dp_remote_i2c_write {
|
||||
u8 port_number;
|
||||
u8 write_i2c_device_id;
|
||||
u8 num_bytes;
|
||||
u8 *bytes;
|
||||
};
|
||||
|
||||
/* this covers ENUM_RESOURCES, POWER_DOWN_PHY, POWER_UP_PHY */
|
||||
struct drm_dp_port_number_req {
|
||||
u8 port_number;
|
||||
};
|
||||
|
||||
struct drm_dp_enum_path_resources_ack_reply {
|
||||
u8 port_number;
|
||||
u16 full_payload_bw_number;
|
||||
u16 avail_payload_bw_number;
|
||||
};
|
||||
|
||||
/* covers POWER_DOWN_PHY, POWER_UP_PHY */
|
||||
struct drm_dp_port_number_rep {
|
||||
u8 port_number;
|
||||
};
|
||||
|
||||
struct drm_dp_query_payload {
|
||||
u8 port_number;
|
||||
u8 vcpi;
|
||||
};
|
||||
|
||||
struct drm_dp_resource_status_notify {
|
||||
u8 port_number;
|
||||
u8 guid[16];
|
||||
u16 available_pbn;
|
||||
};
|
||||
|
||||
struct drm_dp_query_payload_ack_reply {
|
||||
u8 port_number;
|
||||
u8 allocated_pbn;
|
||||
};
|
||||
|
||||
struct drm_dp_sideband_msg_req_body {
|
||||
u8 req_type;
|
||||
union ack_req {
|
||||
struct drm_dp_connection_status_notify conn_stat;
|
||||
struct drm_dp_port_number_req port_num;
|
||||
struct drm_dp_resource_status_notify resource_stat;
|
||||
|
||||
struct drm_dp_query_payload query_payload;
|
||||
struct drm_dp_allocate_payload allocate_payload;
|
||||
|
||||
struct drm_dp_remote_dpcd_read dpcd_read;
|
||||
struct drm_dp_remote_dpcd_write dpcd_write;
|
||||
|
||||
struct drm_dp_remote_i2c_read i2c_read;
|
||||
struct drm_dp_remote_i2c_write i2c_write;
|
||||
} u;
|
||||
};
|
||||
|
||||
struct drm_dp_sideband_msg_reply_body {
|
||||
u8 reply_type;
|
||||
u8 req_type;
|
||||
union ack_replies {
|
||||
struct drm_dp_nak_reply nak;
|
||||
struct drm_dp_link_address_ack_reply link_addr;
|
||||
struct drm_dp_port_number_rep port_number;
|
||||
|
||||
struct drm_dp_enum_path_resources_ack_reply path_resources;
|
||||
struct drm_dp_allocate_payload_ack_reply allocate_payload;
|
||||
struct drm_dp_query_payload_ack_reply query_payload;
|
||||
|
||||
struct drm_dp_remote_dpcd_read_ack_reply remote_dpcd_read_ack;
|
||||
struct drm_dp_remote_dpcd_write_ack_reply remote_dpcd_write_ack;
|
||||
struct drm_dp_remote_dpcd_write_nak_reply remote_dpcd_write_nack;
|
||||
|
||||
struct drm_dp_remote_i2c_read_ack_reply remote_i2c_read_ack;
|
||||
struct drm_dp_remote_i2c_read_nak_reply remote_i2c_read_nack;
|
||||
struct drm_dp_remote_i2c_write_ack_reply remote_i2c_write_ack;
|
||||
} u;
|
||||
};
|
||||
|
||||
/* msg is queued to be put into a slot */
|
||||
#define DRM_DP_SIDEBAND_TX_QUEUED 0
|
||||
/* msg has started transmitting on a slot - still on msgq */
|
||||
#define DRM_DP_SIDEBAND_TX_START_SEND 1
|
||||
/* msg has finished transmitting on a slot - removed from msgq only in slot */
|
||||
#define DRM_DP_SIDEBAND_TX_SENT 2
|
||||
/* msg has received a response - removed from slot */
|
||||
#define DRM_DP_SIDEBAND_TX_RX 3
|
||||
#define DRM_DP_SIDEBAND_TX_TIMEOUT 4
|
||||
|
||||
struct drm_dp_sideband_msg_tx {
|
||||
u8 msg[256];
|
||||
u8 chunk[48];
|
||||
u8 cur_offset;
|
||||
u8 cur_len;
|
||||
struct drm_dp_mst_branch *dst;
|
||||
struct list_head next;
|
||||
int seqno;
|
||||
int state;
|
||||
bool path_msg;
|
||||
struct drm_dp_sideband_msg_reply_body reply;
|
||||
};
|
||||
|
||||
/* sideband msg handler */
|
||||
struct drm_dp_mst_topology_mgr;
|
||||
struct drm_dp_mst_topology_cbs {
|
||||
/* create a connector for a port */
|
||||
struct drm_connector *(*add_connector)(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, char *path);
|
||||
void (*destroy_connector)(struct drm_dp_mst_topology_mgr *mgr,
|
||||
struct drm_connector *connector);
|
||||
void (*hotplug)(struct drm_dp_mst_topology_mgr *mgr);
|
||||
|
||||
};
|
||||
|
||||
#define DP_MAX_PAYLOAD (sizeof(unsigned long) * 8)
|
||||
|
||||
#define DP_PAYLOAD_LOCAL 1
|
||||
#define DP_PAYLOAD_REMOTE 2
|
||||
#define DP_PAYLOAD_DELETE_LOCAL 3
|
||||
|
||||
struct drm_dp_payload {
|
||||
int payload_state;
|
||||
int start_slot;
|
||||
int num_slots;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_dp_mst_topology_mgr - DisplayPort MST manager
|
||||
* @dev: device pointer for adding i2c devices etc.
|
||||
* @cbs: callbacks for connector addition and destruction.
|
||||
* @max_dpcd_transaction_bytes - maximum number of bytes to read/write in one go.
|
||||
* @aux: aux channel for the DP connector.
|
||||
* @max_payloads: maximum number of payloads the GPU can generate.
|
||||
* @conn_base_id: DRM connector ID this mgr is connected to.
|
||||
* @down_rep_recv: msg receiver state for down replies.
|
||||
* @up_req_recv: msg receiver state for up requests.
|
||||
* @lock: protects mst state, primary, guid, dpcd.
|
||||
* @mst_state: if this manager is enabled for an MST capable port.
|
||||
* @mst_primary: pointer to the primary branch device.
|
||||
* @guid_valid: GUID valid for the primary branch device.
|
||||
* @guid: GUID for primary port.
|
||||
* @dpcd: cache of DPCD for primary port.
|
||||
* @pbn_div: PBN to slots divisor.
|
||||
*
|
||||
* This struct represents the toplevel displayport MST topology manager.
|
||||
* There should be one instance of this for every MST capable DP connector
|
||||
* on the GPU.
|
||||
*/
|
||||
struct drm_dp_mst_topology_mgr {
|
||||
|
||||
struct device *dev;
|
||||
struct drm_dp_mst_topology_cbs *cbs;
|
||||
int max_dpcd_transaction_bytes;
|
||||
struct drm_dp_aux *aux; /* auxch for this topology mgr to use */
|
||||
int max_payloads;
|
||||
int conn_base_id;
|
||||
|
||||
/* only ever accessed from the workqueue - which should be serialised */
|
||||
struct drm_dp_sideband_msg_rx down_rep_recv;
|
||||
struct drm_dp_sideband_msg_rx up_req_recv;
|
||||
|
||||
/* pointer to info about the initial MST device */
|
||||
struct mutex lock; /* protects mst_state + primary + guid + dpcd */
|
||||
|
||||
bool mst_state;
|
||||
struct drm_dp_mst_branch *mst_primary;
|
||||
/* primary MST device GUID */
|
||||
bool guid_valid;
|
||||
u8 guid[16];
|
||||
u8 dpcd[DP_RECEIVER_CAP_SIZE];
|
||||
u8 sink_count;
|
||||
int pbn_div;
|
||||
int total_slots;
|
||||
int avail_slots;
|
||||
int total_pbn;
|
||||
|
||||
/* messages to be transmitted */
|
||||
/* qlock protects the upq/downq and in_progress,
|
||||
the mstb tx_slots and txmsg->state once they are queued */
|
||||
struct mutex qlock;
|
||||
struct list_head tx_msg_downq;
|
||||
struct list_head tx_msg_upq;
|
||||
bool tx_down_in_progress;
|
||||
bool tx_up_in_progress;
|
||||
|
||||
/* payload info + lock for it */
|
||||
struct mutex payload_lock;
|
||||
struct drm_dp_vcpi **proposed_vcpis;
|
||||
struct drm_dp_payload *payloads;
|
||||
unsigned long payload_mask;
|
||||
|
||||
wait_queue_head_t tx_waitq;
|
||||
struct work_struct work;
|
||||
|
||||
struct work_struct tx_work;
|
||||
};
|
||||
|
||||
int drm_dp_mst_topology_mgr_init(struct drm_dp_mst_topology_mgr *mgr, struct device *dev, struct drm_dp_aux *aux, int max_dpcd_transaction_bytes, int max_payloads, int conn_base_id);
|
||||
|
||||
void drm_dp_mst_topology_mgr_destroy(struct drm_dp_mst_topology_mgr *mgr);
|
||||
|
||||
|
||||
int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool mst_state);
|
||||
|
||||
|
||||
int drm_dp_mst_hpd_irq(struct drm_dp_mst_topology_mgr *mgr, u8 *esi, bool *handled);
|
||||
|
||||
|
||||
enum drm_connector_status drm_dp_mst_detect_port(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port);
|
||||
|
||||
struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port);
|
||||
|
||||
|
||||
int drm_dp_calc_pbn_mode(int clock, int bpp);
|
||||
|
||||
|
||||
bool drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, int pbn, int *slots);
|
||||
|
||||
|
||||
void drm_dp_mst_reset_vcpi_slots(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port);
|
||||
|
||||
|
||||
void drm_dp_mst_deallocate_vcpi(struct drm_dp_mst_topology_mgr *mgr,
|
||||
struct drm_dp_mst_port *port);
|
||||
|
||||
|
||||
int drm_dp_find_vcpi_slots(struct drm_dp_mst_topology_mgr *mgr,
|
||||
int pbn);
|
||||
|
||||
|
||||
int drm_dp_update_payload_part1(struct drm_dp_mst_topology_mgr *mgr);
|
||||
|
||||
|
||||
int drm_dp_update_payload_part2(struct drm_dp_mst_topology_mgr *mgr);
|
||||
|
||||
int drm_dp_check_act_status(struct drm_dp_mst_topology_mgr *mgr);
|
||||
|
||||
void drm_dp_mst_dump_topology(struct seq_file *m,
|
||||
struct drm_dp_mst_topology_mgr *mgr);
|
||||
|
||||
void drm_dp_mst_topology_mgr_suspend(struct drm_dp_mst_topology_mgr *mgr);
|
||||
int drm_dp_mst_topology_mgr_resume(struct drm_dp_mst_topology_mgr *mgr);
|
||||
#endif
|
||||
@@ -86,8 +86,9 @@ struct drm_fb_helper {
|
||||
int crtc_count;
|
||||
struct drm_fb_helper_crtc *crtc_info;
|
||||
int connector_count;
|
||||
int connector_info_alloc_count;
|
||||
struct drm_fb_helper_connector **connector_info;
|
||||
struct drm_fb_helper_funcs *funcs;
|
||||
const struct drm_fb_helper_funcs *funcs;
|
||||
struct fb_info *fbdev;
|
||||
u32 pseudo_palette[17];
|
||||
struct list_head kernel_fb_list;
|
||||
@@ -97,6 +98,8 @@ struct drm_fb_helper {
|
||||
bool delayed_hotplug;
|
||||
};
|
||||
|
||||
void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper,
|
||||
const struct drm_fb_helper_funcs *funcs);
|
||||
int drm_fb_helper_init(struct drm_device *dev,
|
||||
struct drm_fb_helper *helper, int crtc_count,
|
||||
int max_conn);
|
||||
@@ -128,4 +131,7 @@ struct drm_display_mode *
|
||||
drm_pick_cmdline_mode(struct drm_fb_helper_connector *fb_helper_conn,
|
||||
int width, int height);
|
||||
|
||||
int drm_fb_helper_add_one_connector(struct drm_fb_helper *fb_helper, struct drm_connector *connector);
|
||||
int drm_fb_helper_remove_one_connector(struct drm_fb_helper *fb_helper,
|
||||
struct drm_connector *connector);
|
||||
#endif
|
||||
|
||||
@@ -94,6 +94,8 @@ void mipi_dsi_host_unregister(struct mipi_dsi_host *host);
|
||||
#define MIPI_DSI_MODE_VSYNC_FLUSH BIT(8)
|
||||
/* disable EoT packets in HS mode */
|
||||
#define MIPI_DSI_MODE_EOT_PACKET BIT(9)
|
||||
/* device supports non-continuous clock behavior (DSI spec 5.6.1) */
|
||||
#define MIPI_DSI_CLOCK_NON_CONTINUOUS BIT(10)
|
||||
|
||||
enum mipi_dsi_pixel_format {
|
||||
MIPI_DSI_FMT_RGB888,
|
||||
@@ -121,14 +123,17 @@ struct mipi_dsi_device {
|
||||
unsigned long mode_flags;
|
||||
};
|
||||
|
||||
#define to_mipi_dsi_device(d) container_of(d, struct mipi_dsi_device, dev)
|
||||
static inline struct mipi_dsi_device *to_mipi_dsi_device(struct device *dev)
|
||||
{
|
||||
return container_of(dev, struct mipi_dsi_device, dev);
|
||||
}
|
||||
|
||||
int mipi_dsi_attach(struct mipi_dsi_device *dsi);
|
||||
int mipi_dsi_detach(struct mipi_dsi_device *dsi);
|
||||
int mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, unsigned int channel,
|
||||
const void *data, size_t len);
|
||||
ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, unsigned int channel,
|
||||
u8 cmd, void *data, size_t len);
|
||||
ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, const void *data,
|
||||
size_t len);
|
||||
ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data,
|
||||
size_t len);
|
||||
|
||||
/**
|
||||
* struct mipi_dsi_driver - DSI driver
|
||||
@@ -144,7 +149,11 @@ struct mipi_dsi_driver {
|
||||
void (*shutdown)(struct mipi_dsi_device *dsi);
|
||||
};
|
||||
|
||||
#define to_mipi_dsi_driver(d) container_of(d, struct mipi_dsi_driver, driver)
|
||||
static inline struct mipi_dsi_driver *
|
||||
to_mipi_dsi_driver(struct device_driver *driver)
|
||||
{
|
||||
return container_of(driver, struct mipi_dsi_driver, driver);
|
||||
}
|
||||
|
||||
static inline void *mipi_dsi_get_drvdata(const struct mipi_dsi_device *dsi)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef __DRM_OF_H__
|
||||
#define __DRM_OF_H__
|
||||
|
||||
struct drm_device;
|
||||
struct device_node;
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
extern uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
|
||||
struct device_node *port);
|
||||
#else
|
||||
static inline uint32_t drm_of_find_possible_crtcs(struct drm_device *dev,
|
||||
struct device_node *port)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __DRM_OF_H__ */
|
||||
@@ -30,8 +30,42 @@ struct drm_connector;
|
||||
struct drm_device;
|
||||
struct drm_panel;
|
||||
|
||||
/**
|
||||
* struct drm_panel_funcs - perform operations on a given panel
|
||||
* @disable: disable panel (turn off back light, etc.)
|
||||
* @unprepare: turn off panel
|
||||
* @prepare: turn on panel and perform set up
|
||||
* @enable: enable panel (turn on back light, etc.)
|
||||
* @get_modes: add modes to the connector that the panel is attached to and
|
||||
* return the number of modes added
|
||||
*
|
||||
* The .prepare() function is typically called before the display controller
|
||||
* starts to transmit video data. Panel drivers can use this to turn the panel
|
||||
* on and wait for it to become ready. If additional configuration is required
|
||||
* (via a control bus such as I2C, SPI or DSI for example) this is a good time
|
||||
* to do that.
|
||||
*
|
||||
* After the display controller has started transmitting video data, it's safe
|
||||
* to call the .enable() function. This will typically enable the backlight to
|
||||
* make the image on screen visible. Some panels require a certain amount of
|
||||
* time or frames before the image is displayed. This function is responsible
|
||||
* for taking this into account before enabling the backlight to avoid visual
|
||||
* glitches.
|
||||
*
|
||||
* Before stopping video transmission from the display controller it can be
|
||||
* necessary to turn off the panel to avoid visual glitches. This is done in
|
||||
* the .disable() function. Analogously to .enable() this typically involves
|
||||
* turning off the backlight and waiting for some time to make sure no image
|
||||
* is visible on the panel. It is then safe for the display controller to
|
||||
* cease transmission of video data.
|
||||
*
|
||||
* To save power when no video data is transmitted, a driver can power down
|
||||
* the panel. This is the job of the .unprepare() function.
|
||||
*/
|
||||
struct drm_panel_funcs {
|
||||
int (*disable)(struct drm_panel *panel);
|
||||
int (*unprepare)(struct drm_panel *panel);
|
||||
int (*prepare)(struct drm_panel *panel);
|
||||
int (*enable)(struct drm_panel *panel);
|
||||
int (*get_modes)(struct drm_panel *panel);
|
||||
};
|
||||
@@ -46,6 +80,14 @@ struct drm_panel {
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
static inline int drm_panel_unprepare(struct drm_panel *panel)
|
||||
{
|
||||
if (panel && panel->funcs && panel->funcs->unprepare)
|
||||
return panel->funcs->unprepare(panel);
|
||||
|
||||
return panel ? -ENOSYS : -EINVAL;
|
||||
}
|
||||
|
||||
static inline int drm_panel_disable(struct drm_panel *panel)
|
||||
{
|
||||
if (panel && panel->funcs && panel->funcs->disable)
|
||||
@@ -54,6 +96,14 @@ static inline int drm_panel_disable(struct drm_panel *panel)
|
||||
return panel ? -ENOSYS : -EINVAL;
|
||||
}
|
||||
|
||||
static inline int drm_panel_prepare(struct drm_panel *panel)
|
||||
{
|
||||
if (panel && panel->funcs && panel->funcs->prepare)
|
||||
return panel->funcs->prepare(panel);
|
||||
|
||||
return panel ? -ENOSYS : -EINVAL;
|
||||
}
|
||||
|
||||
static inline int drm_panel_enable(struct drm_panel *panel)
|
||||
{
|
||||
if (panel && panel->funcs && panel->funcs->enable)
|
||||
@@ -62,6 +112,14 @@ static inline int drm_panel_enable(struct drm_panel *panel)
|
||||
return panel ? -ENOSYS : -EINVAL;
|
||||
}
|
||||
|
||||
static inline int drm_panel_get_modes(struct drm_panel *panel)
|
||||
{
|
||||
if (panel && panel->funcs && panel->funcs->get_modes)
|
||||
return panel->funcs->get_modes(panel);
|
||||
|
||||
return panel ? -ENOSYS : -EINVAL;
|
||||
}
|
||||
|
||||
void drm_panel_init(struct drm_panel *panel);
|
||||
|
||||
int drm_panel_add(struct drm_panel *panel);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
{0x1002, 0x1315, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KAVERI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x1316, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KAVERI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x1317, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KAVERI|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x1318, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KAVERI|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x131B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KAVERI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x131C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KAVERI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
{0x1002, 0x131D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KAVERI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
|
||||
@@ -164,8 +165,11 @@
|
||||
{0x1002, 0x6601, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6602, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6603, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6604, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6605, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6606, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6607, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6608, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6610, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6611, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6613, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \
|
||||
@@ -175,6 +179,8 @@
|
||||
{0x1002, 0x6631, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6640, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6641, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6646, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6647, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6649, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6650, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6651, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_BONAIRE|RADEON_NEW_MEMMAP}, \
|
||||
@@ -297,6 +303,7 @@
|
||||
{0x1002, 0x6829, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x682A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x682B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x682C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x682D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x682F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
{0x1002, 0x6830, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
|
||||
|
||||
@@ -163,5 +163,11 @@ int drm_rect_calc_vscale_relaxed(struct drm_rect *src,
|
||||
struct drm_rect *dst,
|
||||
int min_vscale, int max_vscale);
|
||||
void drm_rect_debug_print(const struct drm_rect *r, bool fixed_point);
|
||||
void drm_rect_rotate(struct drm_rect *r,
|
||||
int width, int height,
|
||||
unsigned int rotation);
|
||||
void drm_rect_rotate_inv(struct drm_rect *r,
|
||||
int width, int height,
|
||||
unsigned int rotation);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -133,6 +133,7 @@ struct ttm_tt {
|
||||
* struct ttm_dma_tt
|
||||
*
|
||||
* @ttm: Base ttm_tt struct.
|
||||
* @cpu_address: The CPU address of the pages
|
||||
* @dma_address: The DMA (bus) addresses of the pages
|
||||
* @pages_list: used by some page allocation backend
|
||||
*
|
||||
@@ -142,6 +143,7 @@ struct ttm_tt {
|
||||
*/
|
||||
struct ttm_dma_tt {
|
||||
struct ttm_tt ttm;
|
||||
void **cpu_address;
|
||||
dma_addr_t *dma_address;
|
||||
struct list_head pages_list;
|
||||
};
|
||||
@@ -182,6 +184,7 @@ struct ttm_mem_type_manager_func {
|
||||
* @man: Pointer to a memory type manager.
|
||||
* @bo: Pointer to the buffer object we're allocating space for.
|
||||
* @placement: Placement details.
|
||||
* @flags: Additional placement flags.
|
||||
* @mem: Pointer to a struct ttm_mem_reg to be filled in.
|
||||
*
|
||||
* This function should allocate space in the memory type managed
|
||||
@@ -206,6 +209,7 @@ struct ttm_mem_type_manager_func {
|
||||
int (*get_node)(struct ttm_mem_type_manager *man,
|
||||
struct ttm_buffer_object *bo,
|
||||
struct ttm_placement *placement,
|
||||
uint32_t flags,
|
||||
struct ttm_mem_reg *mem);
|
||||
|
||||
/**
|
||||
@@ -652,18 +656,6 @@ extern void ttm_tt_unbind(struct ttm_tt *ttm);
|
||||
*/
|
||||
extern int ttm_tt_swapin(struct ttm_tt *ttm);
|
||||
|
||||
/**
|
||||
* ttm_tt_cache_flush:
|
||||
*
|
||||
* @pages: An array of pointers to struct page:s to flush.
|
||||
* @num_pages: Number of pages to flush.
|
||||
*
|
||||
* Flush the data of the indicated pages from the cpu caches.
|
||||
* This is used when changing caching attributes of the pages from
|
||||
* cache-coherent.
|
||||
*/
|
||||
extern void ttm_tt_cache_flush(struct page *pages[], unsigned long num_pages);
|
||||
|
||||
/**
|
||||
* ttm_tt_set_placement_caching:
|
||||
*
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
|
||||
*
|
||||
* 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 __DT_BINDINGS_CLOCK_IMX1_H
|
||||
#define __DT_BINDINGS_CLOCK_IMX1_H
|
||||
|
||||
#define IMX1_CLK_DUMMY 0
|
||||
#define IMX1_CLK_CLK32 1
|
||||
#define IMX1_CLK_CLK16M_EXT 2
|
||||
#define IMX1_CLK_CLK16M 3
|
||||
#define IMX1_CLK_CLK32_PREMULT 4
|
||||
#define IMX1_CLK_PREM 5
|
||||
#define IMX1_CLK_MPLL 6
|
||||
#define IMX1_CLK_MPLL_GATE 7
|
||||
#define IMX1_CLK_SPLL 8
|
||||
#define IMX1_CLK_SPLL_GATE 9
|
||||
#define IMX1_CLK_MCU 10
|
||||
#define IMX1_CLK_FCLK 11
|
||||
#define IMX1_CLK_HCLK 12
|
||||
#define IMX1_CLK_CLK48M 13
|
||||
#define IMX1_CLK_PER1 14
|
||||
#define IMX1_CLK_PER2 15
|
||||
#define IMX1_CLK_PER3 16
|
||||
#define IMX1_CLK_CLKO 17
|
||||
#define IMX1_CLK_UART3_GATE 18
|
||||
#define IMX1_CLK_SSI2_GATE 19
|
||||
#define IMX1_CLK_BROM_GATE 20
|
||||
#define IMX1_CLK_DMA_GATE 21
|
||||
#define IMX1_CLK_CSI_GATE 22
|
||||
#define IMX1_CLK_MMA_GATE 23
|
||||
#define IMX1_CLK_USBD_GATE 24
|
||||
#define IMX1_CLK_MAX 25
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
|
||||
*
|
||||
* 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 __DT_BINDINGS_CLOCK_IMX21_H
|
||||
#define __DT_BINDINGS_CLOCK_IMX21_H
|
||||
|
||||
#define IMX21_CLK_DUMMY 0
|
||||
#define IMX21_CLK_CKIL 1
|
||||
#define IMX21_CLK_CKIH 2
|
||||
#define IMX21_CLK_FPM 3
|
||||
#define IMX21_CLK_CKIH_DIV1P5 4
|
||||
#define IMX21_CLK_MPLL_GATE 5
|
||||
#define IMX21_CLK_SPLL_GATE 6
|
||||
#define IMX21_CLK_FPM_GATE 7
|
||||
#define IMX21_CLK_CKIH_GATE 8
|
||||
#define IMX21_CLK_MPLL_OSC_SEL 9
|
||||
#define IMX21_CLK_IPG 10
|
||||
#define IMX21_CLK_HCLK 11
|
||||
#define IMX21_CLK_MPLL_SEL 12
|
||||
#define IMX21_CLK_SPLL_SEL 13
|
||||
#define IMX21_CLK_SSI1_SEL 14
|
||||
#define IMX21_CLK_SSI2_SEL 15
|
||||
#define IMX21_CLK_USB_DIV 16
|
||||
#define IMX21_CLK_FCLK 17
|
||||
#define IMX21_CLK_MPLL 18
|
||||
#define IMX21_CLK_SPLL 19
|
||||
#define IMX21_CLK_NFC_DIV 20
|
||||
#define IMX21_CLK_SSI1_DIV 21
|
||||
#define IMX21_CLK_SSI2_DIV 22
|
||||
#define IMX21_CLK_PER1 23
|
||||
#define IMX21_CLK_PER2 24
|
||||
#define IMX21_CLK_PER3 25
|
||||
#define IMX21_CLK_PER4 26
|
||||
#define IMX21_CLK_UART1_IPG_GATE 27
|
||||
#define IMX21_CLK_UART2_IPG_GATE 28
|
||||
#define IMX21_CLK_UART3_IPG_GATE 29
|
||||
#define IMX21_CLK_UART4_IPG_GATE 30
|
||||
#define IMX21_CLK_CSPI1_IPG_GATE 31
|
||||
#define IMX21_CLK_CSPI2_IPG_GATE 32
|
||||
#define IMX21_CLK_SSI1_GATE 33
|
||||
#define IMX21_CLK_SSI2_GATE 34
|
||||
#define IMX21_CLK_SDHC1_IPG_GATE 35
|
||||
#define IMX21_CLK_SDHC2_IPG_GATE 36
|
||||
#define IMX21_CLK_GPIO_GATE 37
|
||||
#define IMX21_CLK_I2C_GATE 38
|
||||
#define IMX21_CLK_DMA_GATE 39
|
||||
#define IMX21_CLK_USB_GATE 40
|
||||
#define IMX21_CLK_EMMA_GATE 41
|
||||
#define IMX21_CLK_SSI2_BAUD_GATE 42
|
||||
#define IMX21_CLK_SSI1_BAUD_GATE 43
|
||||
#define IMX21_CLK_LCDC_IPG_GATE 44
|
||||
#define IMX21_CLK_NFC_GATE 45
|
||||
#define IMX21_CLK_LCDC_HCLK_GATE 46
|
||||
#define IMX21_CLK_PER4_GATE 47
|
||||
#define IMX21_CLK_BMI_GATE 48
|
||||
#define IMX21_CLK_USB_HCLK_GATE 49
|
||||
#define IMX21_CLK_SLCDC_GATE 50
|
||||
#define IMX21_CLK_SLCDC_HCLK_GATE 51
|
||||
#define IMX21_CLK_EMMA_HCLK_GATE 52
|
||||
#define IMX21_CLK_BROM_GATE 53
|
||||
#define IMX21_CLK_DMA_HCLK_GATE 54
|
||||
#define IMX21_CLK_CSI_HCLK_GATE 55
|
||||
#define IMX21_CLK_CSPI3_IPG_GATE 56
|
||||
#define IMX21_CLK_WDOG_GATE 57
|
||||
#define IMX21_CLK_GPT1_IPG_GATE 58
|
||||
#define IMX21_CLK_GPT2_IPG_GATE 59
|
||||
#define IMX21_CLK_GPT3_IPG_GATE 60
|
||||
#define IMX21_CLK_PWM_IPG_GATE 61
|
||||
#define IMX21_CLK_RTC_GATE 62
|
||||
#define IMX21_CLK_KPP_GATE 63
|
||||
#define IMX21_CLK_OWIRE_GATE 64
|
||||
#define IMX21_CLK_MAX 65
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
|
||||
*
|
||||
* 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 __DT_BINDINGS_CLOCK_IMX27_H
|
||||
#define __DT_BINDINGS_CLOCK_IMX27_H
|
||||
|
||||
#define IMX27_CLK_DUMMY 0
|
||||
#define IMX27_CLK_CKIH 1
|
||||
#define IMX27_CLK_CKIL 2
|
||||
#define IMX27_CLK_MPLL 3
|
||||
#define IMX27_CLK_SPLL 4
|
||||
#define IMX27_CLK_MPLL_MAIN2 5
|
||||
#define IMX27_CLK_AHB 6
|
||||
#define IMX27_CLK_IPG 7
|
||||
#define IMX27_CLK_NFC_DIV 8
|
||||
#define IMX27_CLK_PER1_DIV 9
|
||||
#define IMX27_CLK_PER2_DIV 10
|
||||
#define IMX27_CLK_PER3_DIV 11
|
||||
#define IMX27_CLK_PER4_DIV 12
|
||||
#define IMX27_CLK_VPU_SEL 13
|
||||
#define IMX27_CLK_VPU_DIV 14
|
||||
#define IMX27_CLK_USB_DIV 15
|
||||
#define IMX27_CLK_CPU_SEL 16
|
||||
#define IMX27_CLK_CLKO_SEL 17
|
||||
#define IMX27_CLK_CPU_DIV 18
|
||||
#define IMX27_CLK_CLKO_DIV 19
|
||||
#define IMX27_CLK_SSI1_SEL 20
|
||||
#define IMX27_CLK_SSI2_SEL 21
|
||||
#define IMX27_CLK_SSI1_DIV 22
|
||||
#define IMX27_CLK_SSI2_DIV 23
|
||||
#define IMX27_CLK_CLKO_EN 24
|
||||
#define IMX27_CLK_SSI2_IPG_GATE 25
|
||||
#define IMX27_CLK_SSI1_IPG_GATE 26
|
||||
#define IMX27_CLK_SLCDC_IPG_GATE 27
|
||||
#define IMX27_CLK_SDHC3_IPG_GATE 28
|
||||
#define IMX27_CLK_SDHC2_IPG_GATE 29
|
||||
#define IMX27_CLK_SDHC1_IPG_GATE 30
|
||||
#define IMX27_CLK_SCC_IPG_GATE 31
|
||||
#define IMX27_CLK_SAHARA_IPG_GATE 32
|
||||
#define IMX27_CLK_RTC_IPG_GATE 33
|
||||
#define IMX27_CLK_PWM_IPG_GATE 34
|
||||
#define IMX27_CLK_OWIRE_IPG_GATE 35
|
||||
#define IMX27_CLK_LCDC_IPG_GATE 36
|
||||
#define IMX27_CLK_KPP_IPG_GATE 37
|
||||
#define IMX27_CLK_IIM_IPG_GATE 38
|
||||
#define IMX27_CLK_I2C2_IPG_GATE 39
|
||||
#define IMX27_CLK_I2C1_IPG_GATE 40
|
||||
#define IMX27_CLK_GPT6_IPG_GATE 41
|
||||
#define IMX27_CLK_GPT5_IPG_GATE 42
|
||||
#define IMX27_CLK_GPT4_IPG_GATE 43
|
||||
#define IMX27_CLK_GPT3_IPG_GATE 44
|
||||
#define IMX27_CLK_GPT2_IPG_GATE 45
|
||||
#define IMX27_CLK_GPT1_IPG_GATE 46
|
||||
#define IMX27_CLK_GPIO_IPG_GATE 47
|
||||
#define IMX27_CLK_FEC_IPG_GATE 48
|
||||
#define IMX27_CLK_EMMA_IPG_GATE 49
|
||||
#define IMX27_CLK_DMA_IPG_GATE 50
|
||||
#define IMX27_CLK_CSPI3_IPG_GATE 51
|
||||
#define IMX27_CLK_CSPI2_IPG_GATE 52
|
||||
#define IMX27_CLK_CSPI1_IPG_GATE 53
|
||||
#define IMX27_CLK_NFC_BAUD_GATE 54
|
||||
#define IMX27_CLK_SSI2_BAUD_GATE 55
|
||||
#define IMX27_CLK_SSI1_BAUD_GATE 56
|
||||
#define IMX27_CLK_VPU_BAUD_GATE 57
|
||||
#define IMX27_CLK_PER4_GATE 58
|
||||
#define IMX27_CLK_PER3_GATE 59
|
||||
#define IMX27_CLK_PER2_GATE 60
|
||||
#define IMX27_CLK_PER1_GATE 61
|
||||
#define IMX27_CLK_USB_AHB_GATE 62
|
||||
#define IMX27_CLK_SLCDC_AHB_GATE 63
|
||||
#define IMX27_CLK_SAHARA_AHB_GATE 64
|
||||
#define IMX27_CLK_LCDC_AHB_GATE 65
|
||||
#define IMX27_CLK_VPU_AHB_GATE 66
|
||||
#define IMX27_CLK_FEC_AHB_GATE 67
|
||||
#define IMX27_CLK_EMMA_AHB_GATE 68
|
||||
#define IMX27_CLK_EMI_AHB_GATE 69
|
||||
#define IMX27_CLK_DMA_AHB_GATE 70
|
||||
#define IMX27_CLK_CSI_AHB_GATE 71
|
||||
#define IMX27_CLK_BROM_AHB_GATE 72
|
||||
#define IMX27_CLK_ATA_AHB_GATE 73
|
||||
#define IMX27_CLK_WDOG_IPG_GATE 74
|
||||
#define IMX27_CLK_USB_IPG_GATE 75
|
||||
#define IMX27_CLK_UART6_IPG_GATE 76
|
||||
#define IMX27_CLK_UART5_IPG_GATE 77
|
||||
#define IMX27_CLK_UART4_IPG_GATE 78
|
||||
#define IMX27_CLK_UART3_IPG_GATE 79
|
||||
#define IMX27_CLK_UART2_IPG_GATE 80
|
||||
#define IMX27_CLK_UART1_IPG_GATE 81
|
||||
#define IMX27_CLK_CKIH_DIV1P5 82
|
||||
#define IMX27_CLK_FPM 83
|
||||
#define IMX27_CLK_MPLL_OSC_SEL 84
|
||||
#define IMX27_CLK_MPLL_SEL 85
|
||||
#define IMX27_CLK_SPLL_GATE 86
|
||||
#define IMX27_CLK_MSHC_DIV 87
|
||||
#define IMX27_CLK_RTIC_IPG_GATE 88
|
||||
#define IMX27_CLK_MSHC_IPG_GATE 89
|
||||
#define IMX27_CLK_RTIC_AHB_GATE 90
|
||||
#define IMX27_CLK_MSHC_BAUD_GATE 91
|
||||
#define IMX27_CLK_CKIH_GATE 92
|
||||
#define IMX27_CLK_MAX 93
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,224 @@
|
||||
/*
|
||||
* Copyright 2014 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* 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 __DT_BINDINGS_CLOCK_IMX6QDL_H
|
||||
#define __DT_BINDINGS_CLOCK_IMX6QDL_H
|
||||
|
||||
#define IMX6QDL_CLK_DUMMY 0
|
||||
#define IMX6QDL_CLK_CKIL 1
|
||||
#define IMX6QDL_CLK_CKIH 2
|
||||
#define IMX6QDL_CLK_OSC 3
|
||||
#define IMX6QDL_CLK_PLL2_PFD0_352M 4
|
||||
#define IMX6QDL_CLK_PLL2_PFD1_594M 5
|
||||
#define IMX6QDL_CLK_PLL2_PFD2_396M 6
|
||||
#define IMX6QDL_CLK_PLL3_PFD0_720M 7
|
||||
#define IMX6QDL_CLK_PLL3_PFD1_540M 8
|
||||
#define IMX6QDL_CLK_PLL3_PFD2_508M 9
|
||||
#define IMX6QDL_CLK_PLL3_PFD3_454M 10
|
||||
#define IMX6QDL_CLK_PLL2_198M 11
|
||||
#define IMX6QDL_CLK_PLL3_120M 12
|
||||
#define IMX6QDL_CLK_PLL3_80M 13
|
||||
#define IMX6QDL_CLK_PLL3_60M 14
|
||||
#define IMX6QDL_CLK_TWD 15
|
||||
#define IMX6QDL_CLK_STEP 16
|
||||
#define IMX6QDL_CLK_PLL1_SW 17
|
||||
#define IMX6QDL_CLK_PERIPH_PRE 18
|
||||
#define IMX6QDL_CLK_PERIPH2_PRE 19
|
||||
#define IMX6QDL_CLK_PERIPH_CLK2_SEL 20
|
||||
#define IMX6QDL_CLK_PERIPH2_CLK2_SEL 21
|
||||
#define IMX6QDL_CLK_AXI_SEL 22
|
||||
#define IMX6QDL_CLK_ESAI_SEL 23
|
||||
#define IMX6QDL_CLK_ASRC_SEL 24
|
||||
#define IMX6QDL_CLK_SPDIF_SEL 25
|
||||
#define IMX6QDL_CLK_GPU2D_AXI 26
|
||||
#define IMX6QDL_CLK_GPU3D_AXI 27
|
||||
#define IMX6QDL_CLK_GPU2D_CORE_SEL 28
|
||||
#define IMX6QDL_CLK_GPU3D_CORE_SEL 29
|
||||
#define IMX6QDL_CLK_GPU3D_SHADER_SEL 30
|
||||
#define IMX6QDL_CLK_IPU1_SEL 31
|
||||
#define IMX6QDL_CLK_IPU2_SEL 32
|
||||
#define IMX6QDL_CLK_LDB_DI0_SEL 33
|
||||
#define IMX6QDL_CLK_LDB_DI1_SEL 34
|
||||
#define IMX6QDL_CLK_IPU1_DI0_PRE_SEL 35
|
||||
#define IMX6QDL_CLK_IPU1_DI1_PRE_SEL 36
|
||||
#define IMX6QDL_CLK_IPU2_DI0_PRE_SEL 37
|
||||
#define IMX6QDL_CLK_IPU2_DI1_PRE_SEL 38
|
||||
#define IMX6QDL_CLK_IPU1_DI0_SEL 39
|
||||
#define IMX6QDL_CLK_IPU1_DI1_SEL 40
|
||||
#define IMX6QDL_CLK_IPU2_DI0_SEL 41
|
||||
#define IMX6QDL_CLK_IPU2_DI1_SEL 42
|
||||
#define IMX6QDL_CLK_HSI_TX_SEL 43
|
||||
#define IMX6QDL_CLK_PCIE_AXI_SEL 44
|
||||
#define IMX6QDL_CLK_SSI1_SEL 45
|
||||
#define IMX6QDL_CLK_SSI2_SEL 46
|
||||
#define IMX6QDL_CLK_SSI3_SEL 47
|
||||
#define IMX6QDL_CLK_USDHC1_SEL 48
|
||||
#define IMX6QDL_CLK_USDHC2_SEL 49
|
||||
#define IMX6QDL_CLK_USDHC3_SEL 50
|
||||
#define IMX6QDL_CLK_USDHC4_SEL 51
|
||||
#define IMX6QDL_CLK_ENFC_SEL 52
|
||||
#define IMX6QDL_CLK_EMI_SEL 53
|
||||
#define IMX6QDL_CLK_EMI_SLOW_SEL 54
|
||||
#define IMX6QDL_CLK_VDO_AXI_SEL 55
|
||||
#define IMX6QDL_CLK_VPU_AXI_SEL 56
|
||||
#define IMX6QDL_CLK_CKO1_SEL 57
|
||||
#define IMX6QDL_CLK_PERIPH 58
|
||||
#define IMX6QDL_CLK_PERIPH2 59
|
||||
#define IMX6QDL_CLK_PERIPH_CLK2 60
|
||||
#define IMX6QDL_CLK_PERIPH2_CLK2 61
|
||||
#define IMX6QDL_CLK_IPG 62
|
||||
#define IMX6QDL_CLK_IPG_PER 63
|
||||
#define IMX6QDL_CLK_ESAI_PRED 64
|
||||
#define IMX6QDL_CLK_ESAI_PODF 65
|
||||
#define IMX6QDL_CLK_ASRC_PRED 66
|
||||
#define IMX6QDL_CLK_ASRC_PODF 67
|
||||
#define IMX6QDL_CLK_SPDIF_PRED 68
|
||||
#define IMX6QDL_CLK_SPDIF_PODF 69
|
||||
#define IMX6QDL_CLK_CAN_ROOT 70
|
||||
#define IMX6QDL_CLK_ECSPI_ROOT 71
|
||||
#define IMX6QDL_CLK_GPU2D_CORE_PODF 72
|
||||
#define IMX6QDL_CLK_GPU3D_CORE_PODF 73
|
||||
#define IMX6QDL_CLK_GPU3D_SHADER 74
|
||||
#define IMX6QDL_CLK_IPU1_PODF 75
|
||||
#define IMX6QDL_CLK_IPU2_PODF 76
|
||||
#define IMX6QDL_CLK_LDB_DI0_PODF 77
|
||||
#define IMX6QDL_CLK_LDB_DI1_PODF 78
|
||||
#define IMX6QDL_CLK_IPU1_DI0_PRE 79
|
||||
#define IMX6QDL_CLK_IPU1_DI1_PRE 80
|
||||
#define IMX6QDL_CLK_IPU2_DI0_PRE 81
|
||||
#define IMX6QDL_CLK_IPU2_DI1_PRE 82
|
||||
#define IMX6QDL_CLK_HSI_TX_PODF 83
|
||||
#define IMX6QDL_CLK_SSI1_PRED 84
|
||||
#define IMX6QDL_CLK_SSI1_PODF 85
|
||||
#define IMX6QDL_CLK_SSI2_PRED 86
|
||||
#define IMX6QDL_CLK_SSI2_PODF 87
|
||||
#define IMX6QDL_CLK_SSI3_PRED 88
|
||||
#define IMX6QDL_CLK_SSI3_PODF 89
|
||||
#define IMX6QDL_CLK_UART_SERIAL_PODF 90
|
||||
#define IMX6QDL_CLK_USDHC1_PODF 91
|
||||
#define IMX6QDL_CLK_USDHC2_PODF 92
|
||||
#define IMX6QDL_CLK_USDHC3_PODF 93
|
||||
#define IMX6QDL_CLK_USDHC4_PODF 94
|
||||
#define IMX6QDL_CLK_ENFC_PRED 95
|
||||
#define IMX6QDL_CLK_ENFC_PODF 96
|
||||
#define IMX6QDL_CLK_EMI_PODF 97
|
||||
#define IMX6QDL_CLK_EMI_SLOW_PODF 98
|
||||
#define IMX6QDL_CLK_VPU_AXI_PODF 99
|
||||
#define IMX6QDL_CLK_CKO1_PODF 100
|
||||
#define IMX6QDL_CLK_AXI 101
|
||||
#define IMX6QDL_CLK_MMDC_CH0_AXI_PODF 102
|
||||
#define IMX6QDL_CLK_MMDC_CH1_AXI_PODF 103
|
||||
#define IMX6QDL_CLK_ARM 104
|
||||
#define IMX6QDL_CLK_AHB 105
|
||||
#define IMX6QDL_CLK_APBH_DMA 106
|
||||
#define IMX6QDL_CLK_ASRC 107
|
||||
#define IMX6QDL_CLK_CAN1_IPG 108
|
||||
#define IMX6QDL_CLK_CAN1_SERIAL 109
|
||||
#define IMX6QDL_CLK_CAN2_IPG 110
|
||||
#define IMX6QDL_CLK_CAN2_SERIAL 111
|
||||
#define IMX6QDL_CLK_ECSPI1 112
|
||||
#define IMX6QDL_CLK_ECSPI2 113
|
||||
#define IMX6QDL_CLK_ECSPI3 114
|
||||
#define IMX6QDL_CLK_ECSPI4 115
|
||||
#define IMX6Q_CLK_ECSPI5 116
|
||||
#define IMX6DL_CLK_I2C4 116
|
||||
#define IMX6QDL_CLK_ENET 117
|
||||
#define IMX6QDL_CLK_ESAI 118
|
||||
#define IMX6QDL_CLK_GPT_IPG 119
|
||||
#define IMX6QDL_CLK_GPT_IPG_PER 120
|
||||
#define IMX6QDL_CLK_GPU2D_CORE 121
|
||||
#define IMX6QDL_CLK_GPU3D_CORE 122
|
||||
#define IMX6QDL_CLK_HDMI_IAHB 123
|
||||
#define IMX6QDL_CLK_HDMI_ISFR 124
|
||||
#define IMX6QDL_CLK_I2C1 125
|
||||
#define IMX6QDL_CLK_I2C2 126
|
||||
#define IMX6QDL_CLK_I2C3 127
|
||||
#define IMX6QDL_CLK_IIM 128
|
||||
#define IMX6QDL_CLK_ENFC 129
|
||||
#define IMX6QDL_CLK_IPU1 130
|
||||
#define IMX6QDL_CLK_IPU1_DI0 131
|
||||
#define IMX6QDL_CLK_IPU1_DI1 132
|
||||
#define IMX6QDL_CLK_IPU2 133
|
||||
#define IMX6QDL_CLK_IPU2_DI0 134
|
||||
#define IMX6QDL_CLK_LDB_DI0 135
|
||||
#define IMX6QDL_CLK_LDB_DI1 136
|
||||
#define IMX6QDL_CLK_IPU2_DI1 137
|
||||
#define IMX6QDL_CLK_HSI_TX 138
|
||||
#define IMX6QDL_CLK_MLB 139
|
||||
#define IMX6QDL_CLK_MMDC_CH0_AXI 140
|
||||
#define IMX6QDL_CLK_MMDC_CH1_AXI 141
|
||||
#define IMX6QDL_CLK_OCRAM 142
|
||||
#define IMX6QDL_CLK_OPENVG_AXI 143
|
||||
#define IMX6QDL_CLK_PCIE_AXI 144
|
||||
#define IMX6QDL_CLK_PWM1 145
|
||||
#define IMX6QDL_CLK_PWM2 146
|
||||
#define IMX6QDL_CLK_PWM3 147
|
||||
#define IMX6QDL_CLK_PWM4 148
|
||||
#define IMX6QDL_CLK_PER1_BCH 149
|
||||
#define IMX6QDL_CLK_GPMI_BCH_APB 150
|
||||
#define IMX6QDL_CLK_GPMI_BCH 151
|
||||
#define IMX6QDL_CLK_GPMI_IO 152
|
||||
#define IMX6QDL_CLK_GPMI_APB 153
|
||||
#define IMX6QDL_CLK_SATA 154
|
||||
#define IMX6QDL_CLK_SDMA 155
|
||||
#define IMX6QDL_CLK_SPBA 156
|
||||
#define IMX6QDL_CLK_SSI1 157
|
||||
#define IMX6QDL_CLK_SSI2 158
|
||||
#define IMX6QDL_CLK_SSI3 159
|
||||
#define IMX6QDL_CLK_UART_IPG 160
|
||||
#define IMX6QDL_CLK_UART_SERIAL 161
|
||||
#define IMX6QDL_CLK_USBOH3 162
|
||||
#define IMX6QDL_CLK_USDHC1 163
|
||||
#define IMX6QDL_CLK_USDHC2 164
|
||||
#define IMX6QDL_CLK_USDHC3 165
|
||||
#define IMX6QDL_CLK_USDHC4 166
|
||||
#define IMX6QDL_CLK_VDO_AXI 167
|
||||
#define IMX6QDL_CLK_VPU_AXI 168
|
||||
#define IMX6QDL_CLK_CKO1 169
|
||||
#define IMX6QDL_CLK_PLL1_SYS 170
|
||||
#define IMX6QDL_CLK_PLL2_BUS 171
|
||||
#define IMX6QDL_CLK_PLL3_USB_OTG 172
|
||||
#define IMX6QDL_CLK_PLL4_AUDIO 173
|
||||
#define IMX6QDL_CLK_PLL5_VIDEO 174
|
||||
#define IMX6QDL_CLK_PLL8_MLB 175
|
||||
#define IMX6QDL_CLK_PLL7_USB_HOST 176
|
||||
#define IMX6QDL_CLK_PLL6_ENET 177
|
||||
#define IMX6QDL_CLK_SSI1_IPG 178
|
||||
#define IMX6QDL_CLK_SSI2_IPG 179
|
||||
#define IMX6QDL_CLK_SSI3_IPG 180
|
||||
#define IMX6QDL_CLK_ROM 181
|
||||
#define IMX6QDL_CLK_USBPHY1 182
|
||||
#define IMX6QDL_CLK_USBPHY2 183
|
||||
#define IMX6QDL_CLK_LDB_DI0_DIV_3_5 184
|
||||
#define IMX6QDL_CLK_LDB_DI1_DIV_3_5 185
|
||||
#define IMX6QDL_CLK_SATA_REF 186
|
||||
#define IMX6QDL_CLK_SATA_REF_100M 187
|
||||
#define IMX6QDL_CLK_PCIE_REF 188
|
||||
#define IMX6QDL_CLK_PCIE_REF_125M 189
|
||||
#define IMX6QDL_CLK_ENET_REF 190
|
||||
#define IMX6QDL_CLK_USBPHY1_GATE 191
|
||||
#define IMX6QDL_CLK_USBPHY2_GATE 192
|
||||
#define IMX6QDL_CLK_PLL4_POST_DIV 193
|
||||
#define IMX6QDL_CLK_PLL5_POST_DIV 194
|
||||
#define IMX6QDL_CLK_PLL5_VIDEO_DIV 195
|
||||
#define IMX6QDL_CLK_EIM_SLOW 196
|
||||
#define IMX6QDL_CLK_SPDIF 197
|
||||
#define IMX6QDL_CLK_CKO2_SEL 198
|
||||
#define IMX6QDL_CLK_CKO2_PODF 199
|
||||
#define IMX6QDL_CLK_CKO2 200
|
||||
#define IMX6QDL_CLK_CKO 201
|
||||
#define IMX6QDL_CLK_VDOA 202
|
||||
#define IMX6QDL_CLK_PLL4_AUDIO_DIV 203
|
||||
#define IMX6QDL_CLK_LVDS1_SEL 204
|
||||
#define IMX6QDL_CLK_LVDS2_SEL 205
|
||||
#define IMX6QDL_CLK_LVDS1_GATE 206
|
||||
#define IMX6QDL_CLK_LVDS2_GATE 207
|
||||
#define IMX6QDL_CLK_ESAI_AHB 208
|
||||
#define IMX6QDL_CLK_END 209
|
||||
|
||||
#endif /* __DT_BINDINGS_CLOCK_IMX6QDL_H */
|
||||
@@ -59,6 +59,7 @@
|
||||
#define R8A7790_CLK_SDHI0 14
|
||||
#define R8A7790_CLK_MMCIF0 15
|
||||
#define R8A7790_CLK_IIC0 18
|
||||
#define R8A7790_CLK_PCIEC 19
|
||||
#define R8A7790_CLK_IIC1 23
|
||||
#define R8A7790_CLK_SSUSB 28
|
||||
#define R8A7790_CLK_CMT1 29
|
||||
@@ -107,4 +108,30 @@
|
||||
#define R8A7790_CLK_I2C1 30
|
||||
#define R8A7790_CLK_I2C0 31
|
||||
|
||||
/* MSTP10 */
|
||||
#define R8A7790_CLK_SSI_ALL 5
|
||||
#define R8A7790_CLK_SSI9 6
|
||||
#define R8A7790_CLK_SSI8 7
|
||||
#define R8A7790_CLK_SSI7 8
|
||||
#define R8A7790_CLK_SSI6 9
|
||||
#define R8A7790_CLK_SSI5 10
|
||||
#define R8A7790_CLK_SSI4 11
|
||||
#define R8A7790_CLK_SSI3 12
|
||||
#define R8A7790_CLK_SSI2 13
|
||||
#define R8A7790_CLK_SSI1 14
|
||||
#define R8A7790_CLK_SSI0 15
|
||||
#define R8A7790_CLK_SCU_ALL 17
|
||||
#define R8A7790_CLK_SCU_DVC1 18
|
||||
#define R8A7790_CLK_SCU_DVC0 19
|
||||
#define R8A7790_CLK_SCU_SRC9 22
|
||||
#define R8A7790_CLK_SCU_SRC8 23
|
||||
#define R8A7790_CLK_SCU_SRC7 24
|
||||
#define R8A7790_CLK_SCU_SRC6 25
|
||||
#define R8A7790_CLK_SCU_SRC5 26
|
||||
#define R8A7790_CLK_SCU_SRC4 27
|
||||
#define R8A7790_CLK_SCU_SRC3 28
|
||||
#define R8A7790_CLK_SCU_SRC2 29
|
||||
#define R8A7790_CLK_SCU_SRC1 30
|
||||
#define R8A7790_CLK_SCU_SRC0 31
|
||||
|
||||
#endif /* __DT_BINDINGS_CLOCK_R8A7790_H__ */
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
#define R8A7791_CLK_SDHI0 14
|
||||
#define R8A7791_CLK_MMCIF0 15
|
||||
#define R8A7791_CLK_IIC0 18
|
||||
#define R8A7791_CLK_PCIEC 19
|
||||
#define R8A7791_CLK_IIC1 23
|
||||
#define R8A7791_CLK_SSUSB 28
|
||||
#define R8A7791_CLK_CMT1 29
|
||||
@@ -107,6 +108,32 @@
|
||||
#define R8A7791_CLK_I2C1 30
|
||||
#define R8A7791_CLK_I2C0 31
|
||||
|
||||
/* MSTP10 */
|
||||
#define R8A7791_CLK_SSI_ALL 5
|
||||
#define R8A7791_CLK_SSI9 6
|
||||
#define R8A7791_CLK_SSI8 7
|
||||
#define R8A7791_CLK_SSI7 8
|
||||
#define R8A7791_CLK_SSI6 9
|
||||
#define R8A7791_CLK_SSI5 10
|
||||
#define R8A7791_CLK_SSI4 11
|
||||
#define R8A7791_CLK_SSI3 12
|
||||
#define R8A7791_CLK_SSI2 13
|
||||
#define R8A7791_CLK_SSI1 14
|
||||
#define R8A7791_CLK_SSI0 15
|
||||
#define R8A7791_CLK_SCU_ALL 17
|
||||
#define R8A7791_CLK_SCU_DVC1 18
|
||||
#define R8A7791_CLK_SCU_DVC0 19
|
||||
#define R8A7791_CLK_SCU_SRC9 22
|
||||
#define R8A7791_CLK_SCU_SRC8 23
|
||||
#define R8A7791_CLK_SCU_SRC7 24
|
||||
#define R8A7791_CLK_SCU_SRC6 25
|
||||
#define R8A7791_CLK_SCU_SRC5 26
|
||||
#define R8A7791_CLK_SCU_SRC4 27
|
||||
#define R8A7791_CLK_SCU_SRC3 28
|
||||
#define R8A7791_CLK_SCU_SRC2 29
|
||||
#define R8A7791_CLK_SCU_SRC1 30
|
||||
#define R8A7791_CLK_SCU_SRC0 31
|
||||
|
||||
/* MSTP11 */
|
||||
#define R8A7791_CLK_SCIFA3 6
|
||||
#define R8A7791_CLK_SCIFA4 7
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (c) 2014 Tomasz Figa <tomasz.figa@gmail.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.
|
||||
*
|
||||
* This header provides constants for Samsung audio subsystem
|
||||
* clock controller.
|
||||
*
|
||||
* The constants defined in this header are being used in dts
|
||||
* and s5pv210 audss driver.
|
||||
*/
|
||||
|
||||
#ifndef _DT_BINDINGS_CLOCK_S5PV210_AUDSS_H
|
||||
#define _DT_BINDINGS_CLOCK_S5PV210_AUDSS_H
|
||||
|
||||
#define CLK_MOUT_AUDSS 0
|
||||
#define CLK_MOUT_I2S_A 1
|
||||
|
||||
#define CLK_DOUT_AUD_BUS 2
|
||||
#define CLK_DOUT_I2S_A 3
|
||||
|
||||
#define CLK_I2S 4
|
||||
#define CLK_HCLK_I2S 5
|
||||
#define CLK_HCLK_UART 6
|
||||
#define CLK_HCLK_HWA 7
|
||||
#define CLK_HCLK_DMA 8
|
||||
#define CLK_HCLK_BUF 9
|
||||
#define CLK_HCLK_RP 10
|
||||
|
||||
#define AUDSS_MAX_CLKS 11
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,239 @@
|
||||
/*
|
||||
* Copyright (c) 2013 Samsung Electronics Co., Ltd.
|
||||
* Author: Mateusz Krawczuk <m.krawczuk@partner.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.
|
||||
*
|
||||
* Device Tree binding constants for Samsung S5PV210 clock controller.
|
||||
*/
|
||||
|
||||
#ifndef _DT_BINDINGS_CLOCK_S5PV210_H
|
||||
#define _DT_BINDINGS_CLOCK_S5PV210_H
|
||||
|
||||
/* Core clocks. */
|
||||
#define FIN_PLL 1
|
||||
#define FOUT_APLL 2
|
||||
#define FOUT_MPLL 3
|
||||
#define FOUT_EPLL 4
|
||||
#define FOUT_VPLL 5
|
||||
|
||||
/* Muxes. */
|
||||
#define MOUT_FLASH 6
|
||||
#define MOUT_PSYS 7
|
||||
#define MOUT_DSYS 8
|
||||
#define MOUT_MSYS 9
|
||||
#define MOUT_VPLL 10
|
||||
#define MOUT_EPLL 11
|
||||
#define MOUT_MPLL 12
|
||||
#define MOUT_APLL 13
|
||||
#define MOUT_VPLLSRC 14
|
||||
#define MOUT_CSIS 15
|
||||
#define MOUT_FIMD 16
|
||||
#define MOUT_CAM1 17
|
||||
#define MOUT_CAM0 18
|
||||
#define MOUT_DAC 19
|
||||
#define MOUT_MIXER 20
|
||||
#define MOUT_HDMI 21
|
||||
#define MOUT_G2D 22
|
||||
#define MOUT_MFC 23
|
||||
#define MOUT_G3D 24
|
||||
#define MOUT_FIMC2 25
|
||||
#define MOUT_FIMC1 26
|
||||
#define MOUT_FIMC0 27
|
||||
#define MOUT_UART3 28
|
||||
#define MOUT_UART2 29
|
||||
#define MOUT_UART1 30
|
||||
#define MOUT_UART0 31
|
||||
#define MOUT_MMC3 32
|
||||
#define MOUT_MMC2 33
|
||||
#define MOUT_MMC1 34
|
||||
#define MOUT_MMC0 35
|
||||
#define MOUT_PWM 36
|
||||
#define MOUT_SPI0 37
|
||||
#define MOUT_SPI1 38
|
||||
#define MOUT_DMC0 39
|
||||
#define MOUT_PWI 40
|
||||
#define MOUT_HPM 41
|
||||
#define MOUT_SPDIF 42
|
||||
#define MOUT_AUDIO2 43
|
||||
#define MOUT_AUDIO1 44
|
||||
#define MOUT_AUDIO0 45
|
||||
|
||||
/* Dividers. */
|
||||
#define DOUT_PCLKP 46
|
||||
#define DOUT_HCLKP 47
|
||||
#define DOUT_PCLKD 48
|
||||
#define DOUT_HCLKD 49
|
||||
#define DOUT_PCLKM 50
|
||||
#define DOUT_HCLKM 51
|
||||
#define DOUT_A2M 52
|
||||
#define DOUT_APLL 53
|
||||
#define DOUT_CSIS 54
|
||||
#define DOUT_FIMD 55
|
||||
#define DOUT_CAM1 56
|
||||
#define DOUT_CAM0 57
|
||||
#define DOUT_TBLK 58
|
||||
#define DOUT_G2D 59
|
||||
#define DOUT_MFC 60
|
||||
#define DOUT_G3D 61
|
||||
#define DOUT_FIMC2 62
|
||||
#define DOUT_FIMC1 63
|
||||
#define DOUT_FIMC0 64
|
||||
#define DOUT_UART3 65
|
||||
#define DOUT_UART2 66
|
||||
#define DOUT_UART1 67
|
||||
#define DOUT_UART0 68
|
||||
#define DOUT_MMC3 69
|
||||
#define DOUT_MMC2 70
|
||||
#define DOUT_MMC1 71
|
||||
#define DOUT_MMC0 72
|
||||
#define DOUT_PWM 73
|
||||
#define DOUT_SPI1 74
|
||||
#define DOUT_SPI0 75
|
||||
#define DOUT_DMC0 76
|
||||
#define DOUT_PWI 77
|
||||
#define DOUT_HPM 78
|
||||
#define DOUT_COPY 79
|
||||
#define DOUT_FLASH 80
|
||||
#define DOUT_AUDIO2 81
|
||||
#define DOUT_AUDIO1 82
|
||||
#define DOUT_AUDIO0 83
|
||||
#define DOUT_DPM 84
|
||||
#define DOUT_DVSEM 85
|
||||
|
||||
/* Gates */
|
||||
#define SCLK_FIMC 86
|
||||
#define CLK_CSIS 87
|
||||
#define CLK_ROTATOR 88
|
||||
#define CLK_FIMC2 89
|
||||
#define CLK_FIMC1 90
|
||||
#define CLK_FIMC0 91
|
||||
#define CLK_MFC 92
|
||||
#define CLK_G2D 93
|
||||
#define CLK_G3D 94
|
||||
#define CLK_IMEM 95
|
||||
#define CLK_PDMA1 96
|
||||
#define CLK_PDMA0 97
|
||||
#define CLK_MDMA 98
|
||||
#define CLK_DMC1 99
|
||||
#define CLK_DMC0 100
|
||||
#define CLK_NFCON 101
|
||||
#define CLK_SROMC 102
|
||||
#define CLK_CFCON 103
|
||||
#define CLK_NANDXL 104
|
||||
#define CLK_USB_HOST 105
|
||||
#define CLK_USB_OTG 106
|
||||
#define CLK_HDMI 107
|
||||
#define CLK_TVENC 108
|
||||
#define CLK_MIXER 109
|
||||
#define CLK_VP 110
|
||||
#define CLK_DSIM 111
|
||||
#define CLK_FIMD 112
|
||||
#define CLK_TZIC3 113
|
||||
#define CLK_TZIC2 114
|
||||
#define CLK_TZIC1 115
|
||||
#define CLK_TZIC0 116
|
||||
#define CLK_VIC3 117
|
||||
#define CLK_VIC2 118
|
||||
#define CLK_VIC1 119
|
||||
#define CLK_VIC0 120
|
||||
#define CLK_TSI 121
|
||||
#define CLK_HSMMC3 122
|
||||
#define CLK_HSMMC2 123
|
||||
#define CLK_HSMMC1 124
|
||||
#define CLK_HSMMC0 125
|
||||
#define CLK_JTAG 126
|
||||
#define CLK_MODEMIF 127
|
||||
#define CLK_CORESIGHT 128
|
||||
#define CLK_SDM 129
|
||||
#define CLK_SECSS 130
|
||||
#define CLK_PCM2 131
|
||||
#define CLK_PCM1 132
|
||||
#define CLK_PCM0 133
|
||||
#define CLK_SYSCON 134
|
||||
#define CLK_GPIO 135
|
||||
#define CLK_TSADC 136
|
||||
#define CLK_PWM 137
|
||||
#define CLK_WDT 138
|
||||
#define CLK_KEYIF 139
|
||||
#define CLK_UART3 140
|
||||
#define CLK_UART2 141
|
||||
#define CLK_UART1 142
|
||||
#define CLK_UART0 143
|
||||
#define CLK_SYSTIMER 144
|
||||
#define CLK_RTC 145
|
||||
#define CLK_SPI1 146
|
||||
#define CLK_SPI0 147
|
||||
#define CLK_I2C_HDMI_PHY 148
|
||||
#define CLK_I2C1 149
|
||||
#define CLK_I2C2 150
|
||||
#define CLK_I2C0 151
|
||||
#define CLK_I2S1 152
|
||||
#define CLK_I2S2 153
|
||||
#define CLK_I2S0 154
|
||||
#define CLK_AC97 155
|
||||
#define CLK_SPDIF 156
|
||||
#define CLK_TZPC3 157
|
||||
#define CLK_TZPC2 158
|
||||
#define CLK_TZPC1 159
|
||||
#define CLK_TZPC0 160
|
||||
#define CLK_SECKEY 161
|
||||
#define CLK_IEM_APC 162
|
||||
#define CLK_IEM_IEC 163
|
||||
#define CLK_CHIPID 164
|
||||
#define CLK_JPEG 163
|
||||
|
||||
/* Special clocks*/
|
||||
#define SCLK_PWI 164
|
||||
#define SCLK_SPDIF 165
|
||||
#define SCLK_AUDIO2 166
|
||||
#define SCLK_AUDIO1 167
|
||||
#define SCLK_AUDIO0 168
|
||||
#define SCLK_PWM 169
|
||||
#define SCLK_SPI1 170
|
||||
#define SCLK_SPI0 171
|
||||
#define SCLK_UART3 172
|
||||
#define SCLK_UART2 173
|
||||
#define SCLK_UART1 174
|
||||
#define SCLK_UART0 175
|
||||
#define SCLK_MMC3 176
|
||||
#define SCLK_MMC2 177
|
||||
#define SCLK_MMC1 178
|
||||
#define SCLK_MMC0 179
|
||||
#define SCLK_FINVPLL 180
|
||||
#define SCLK_CSIS 181
|
||||
#define SCLK_FIMD 182
|
||||
#define SCLK_CAM1 183
|
||||
#define SCLK_CAM0 184
|
||||
#define SCLK_DAC 185
|
||||
#define SCLK_MIXER 186
|
||||
#define SCLK_HDMI 187
|
||||
#define SCLK_FIMC2 188
|
||||
#define SCLK_FIMC1 189
|
||||
#define SCLK_FIMC0 190
|
||||
#define SCLK_HDMI27M 191
|
||||
#define SCLK_HDMIPHY 192
|
||||
#define SCLK_USBPHY0 193
|
||||
#define SCLK_USBPHY1 194
|
||||
|
||||
/* S5P6442-specific clocks */
|
||||
#define MOUT_D0SYNC 195
|
||||
#define MOUT_D1SYNC 196
|
||||
#define DOUT_MIXER 197
|
||||
#define CLK_ETB 198
|
||||
#define CLK_ETM 199
|
||||
|
||||
/* CLKOUT */
|
||||
#define FOUT_APLL_CLKOUT 200
|
||||
#define FOUT_MPLL_CLKOUT 201
|
||||
#define DOUT_APLL_CLKOUT 202
|
||||
#define MOUT_CLKSEL 203
|
||||
#define DOUT_CLKOUT 204
|
||||
#define MOUT_CLKOUT 205
|
||||
|
||||
/* Total number of clocks. */
|
||||
#define NR_CLKS 206
|
||||
|
||||
#endif /* _DT_BINDINGS_CLOCK_S5PV210_H */
|
||||
@@ -164,6 +164,8 @@
|
||||
#define VF610_CLK_DMAMUX1 151
|
||||
#define VF610_CLK_DMAMUX2 152
|
||||
#define VF610_CLK_DMAMUX3 153
|
||||
#define VF610_CLK_END 154
|
||||
#define VF610_CLK_FLEXCAN0_EN 154
|
||||
#define VF610_CLK_FLEXCAN1_EN 155
|
||||
#define VF610_CLK_END 156
|
||||
|
||||
#endif /* __DT_BINDINGS_CLOCK_VF610_H */
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright (C) 2013-2014 Renesas Electronics Europe Ltd.
|
||||
* Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef DT_BINDINGS_NBPFAXI_H
|
||||
#define DT_BINDINGS_NBPFAXI_H
|
||||
|
||||
/**
|
||||
* Use "#dma-cells = <2>;" with the second integer defining slave DMA flags:
|
||||
*/
|
||||
#define NBPF_SLAVE_RQ_HIGH 1
|
||||
#define NBPF_SLAVE_RQ_LOW 2
|
||||
#define NBPF_SLAVE_RQ_LEVEL 4
|
||||
|
||||
#endif
|
||||
@@ -13,7 +13,7 @@
|
||||
/* External control pins */
|
||||
#define AS3722_EXT_CONTROL_PIN_ENABLE1 1
|
||||
#define AS3722_EXT_CONTROL_PIN_ENABLE2 2
|
||||
#define AS3722_EXT_CONTROL_PIN_ENABLE2 3
|
||||
#define AS3722_EXT_CONTROL_PIN_ENABLE3 3
|
||||
|
||||
/* Interrupt numbers for AS3722 */
|
||||
#define AS3722_IRQ_LID 0
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#ifndef _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H
|
||||
#define _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H 1
|
||||
|
||||
#define TEGRA_XUSB_PADCTL_PCIE 0
|
||||
#define TEGRA_XUSB_PADCTL_SATA 1
|
||||
|
||||
#endif /* _DT_BINDINGS_PINCTRL_TEGRA_XUSB_H */
|
||||
@@ -67,6 +67,10 @@ void kvm_timer_vcpu_init(struct kvm_vcpu *vcpu);
|
||||
void kvm_timer_flush_hwstate(struct kvm_vcpu *vcpu);
|
||||
void kvm_timer_sync_hwstate(struct kvm_vcpu *vcpu);
|
||||
void kvm_timer_vcpu_terminate(struct kvm_vcpu *vcpu);
|
||||
|
||||
u64 kvm_arm_timer_get_reg(struct kvm_vcpu *, u64 regid);
|
||||
int kvm_arm_timer_set_reg(struct kvm_vcpu *, u64 regid, u64 value);
|
||||
|
||||
#else
|
||||
static inline int kvm_timer_hyp_init(void)
|
||||
{
|
||||
@@ -84,6 +88,16 @@ static inline void kvm_timer_vcpu_init(struct kvm_vcpu *vcpu) {}
|
||||
static inline void kvm_timer_flush_hwstate(struct kvm_vcpu *vcpu) {}
|
||||
static inline void kvm_timer_sync_hwstate(struct kvm_vcpu *vcpu) {}
|
||||
static inline void kvm_timer_vcpu_terminate(struct kvm_vcpu *vcpu) {}
|
||||
|
||||
static inline int kvm_arm_timer_set_reg(struct kvm_vcpu *vcpu, u64 regid, u64 value)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline u64 kvm_arm_timer_get_reg(struct kvm_vcpu *vcpu, u64 regid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
+104
-11
@@ -24,7 +24,6 @@
|
||||
#include <linux/irqreturn.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/irqchip/arm-gic.h>
|
||||
|
||||
#define VGIC_NR_IRQS 256
|
||||
#define VGIC_NR_SGIS 16
|
||||
@@ -32,7 +31,9 @@
|
||||
#define VGIC_NR_PRIVATE_IRQS (VGIC_NR_SGIS + VGIC_NR_PPIS)
|
||||
#define VGIC_NR_SHARED_IRQS (VGIC_NR_IRQS - VGIC_NR_PRIVATE_IRQS)
|
||||
#define VGIC_MAX_CPUS KVM_MAX_VCPUS
|
||||
#define VGIC_MAX_LRS (1 << 6)
|
||||
|
||||
#define VGIC_V2_MAX_LRS (1 << 6)
|
||||
#define VGIC_V3_MAX_LRS 16
|
||||
|
||||
/* Sanity checks... */
|
||||
#if (VGIC_MAX_CPUS > 8)
|
||||
@@ -68,9 +69,62 @@ struct vgic_bytemap {
|
||||
u32 shared[VGIC_NR_SHARED_IRQS / 4];
|
||||
};
|
||||
|
||||
struct kvm_vcpu;
|
||||
|
||||
enum vgic_type {
|
||||
VGIC_V2, /* Good ol' GICv2 */
|
||||
VGIC_V3, /* New fancy GICv3 */
|
||||
};
|
||||
|
||||
#define LR_STATE_PENDING (1 << 0)
|
||||
#define LR_STATE_ACTIVE (1 << 1)
|
||||
#define LR_STATE_MASK (3 << 0)
|
||||
#define LR_EOI_INT (1 << 2)
|
||||
|
||||
struct vgic_lr {
|
||||
u16 irq;
|
||||
u8 source;
|
||||
u8 state;
|
||||
};
|
||||
|
||||
struct vgic_vmcr {
|
||||
u32 ctlr;
|
||||
u32 abpr;
|
||||
u32 bpr;
|
||||
u32 pmr;
|
||||
};
|
||||
|
||||
struct vgic_ops {
|
||||
struct vgic_lr (*get_lr)(const struct kvm_vcpu *, int);
|
||||
void (*set_lr)(struct kvm_vcpu *, int, struct vgic_lr);
|
||||
void (*sync_lr_elrsr)(struct kvm_vcpu *, int, struct vgic_lr);
|
||||
u64 (*get_elrsr)(const struct kvm_vcpu *vcpu);
|
||||
u64 (*get_eisr)(const struct kvm_vcpu *vcpu);
|
||||
u32 (*get_interrupt_status)(const struct kvm_vcpu *vcpu);
|
||||
void (*enable_underflow)(struct kvm_vcpu *vcpu);
|
||||
void (*disable_underflow)(struct kvm_vcpu *vcpu);
|
||||
void (*get_vmcr)(struct kvm_vcpu *vcpu, struct vgic_vmcr *vmcr);
|
||||
void (*set_vmcr)(struct kvm_vcpu *vcpu, struct vgic_vmcr *vmcr);
|
||||
void (*enable)(struct kvm_vcpu *vcpu);
|
||||
};
|
||||
|
||||
struct vgic_params {
|
||||
/* vgic type */
|
||||
enum vgic_type type;
|
||||
/* Physical address of vgic virtual cpu interface */
|
||||
phys_addr_t vcpu_base;
|
||||
/* Number of list registers */
|
||||
u32 nr_lr;
|
||||
/* Interrupt number */
|
||||
unsigned int maint_irq;
|
||||
/* Virtual control interface base address */
|
||||
void __iomem *vctrl_base;
|
||||
};
|
||||
|
||||
struct vgic_dist {
|
||||
#ifdef CONFIG_KVM_ARM_VGIC
|
||||
spinlock_t lock;
|
||||
bool in_kernel;
|
||||
bool ready;
|
||||
|
||||
/* Virtual control interface mapping */
|
||||
@@ -110,6 +164,29 @@ struct vgic_dist {
|
||||
#endif
|
||||
};
|
||||
|
||||
struct vgic_v2_cpu_if {
|
||||
u32 vgic_hcr;
|
||||
u32 vgic_vmcr;
|
||||
u32 vgic_misr; /* Saved only */
|
||||
u32 vgic_eisr[2]; /* Saved only */
|
||||
u32 vgic_elrsr[2]; /* Saved only */
|
||||
u32 vgic_apr;
|
||||
u32 vgic_lr[VGIC_V2_MAX_LRS];
|
||||
};
|
||||
|
||||
struct vgic_v3_cpu_if {
|
||||
#ifdef CONFIG_ARM_GIC_V3
|
||||
u32 vgic_hcr;
|
||||
u32 vgic_vmcr;
|
||||
u32 vgic_misr; /* Saved only */
|
||||
u32 vgic_eisr; /* Saved only */
|
||||
u32 vgic_elrsr; /* Saved only */
|
||||
u32 vgic_ap0r[4];
|
||||
u32 vgic_ap1r[4];
|
||||
u64 vgic_lr[VGIC_V3_MAX_LRS];
|
||||
#endif
|
||||
};
|
||||
|
||||
struct vgic_cpu {
|
||||
#ifdef CONFIG_KVM_ARM_VGIC
|
||||
/* per IRQ to LR mapping */
|
||||
@@ -120,24 +197,24 @@ struct vgic_cpu {
|
||||
DECLARE_BITMAP( pending_shared, VGIC_NR_SHARED_IRQS);
|
||||
|
||||
/* Bitmap of used/free list registers */
|
||||
DECLARE_BITMAP( lr_used, VGIC_MAX_LRS);
|
||||
DECLARE_BITMAP( lr_used, VGIC_V2_MAX_LRS);
|
||||
|
||||
/* Number of list registers on this CPU */
|
||||
int nr_lr;
|
||||
|
||||
/* CPU vif control registers for world switch */
|
||||
u32 vgic_hcr;
|
||||
u32 vgic_vmcr;
|
||||
u32 vgic_misr; /* Saved only */
|
||||
u32 vgic_eisr[2]; /* Saved only */
|
||||
u32 vgic_elrsr[2]; /* Saved only */
|
||||
u32 vgic_apr;
|
||||
u32 vgic_lr[VGIC_MAX_LRS];
|
||||
union {
|
||||
struct vgic_v2_cpu_if vgic_v2;
|
||||
struct vgic_v3_cpu_if vgic_v3;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
#define LR_EMPTY 0xff
|
||||
|
||||
#define INT_STATUS_EOI (1 << 0)
|
||||
#define INT_STATUS_UNDERFLOW (1 << 1)
|
||||
|
||||
struct kvm;
|
||||
struct kvm_vcpu;
|
||||
struct kvm_run;
|
||||
@@ -157,9 +234,25 @@ int kvm_vgic_vcpu_pending_irq(struct kvm_vcpu *vcpu);
|
||||
bool vgic_handle_mmio(struct kvm_vcpu *vcpu, struct kvm_run *run,
|
||||
struct kvm_exit_mmio *mmio);
|
||||
|
||||
#define irqchip_in_kernel(k) (!!((k)->arch.vgic.vctrl_base))
|
||||
#define irqchip_in_kernel(k) (!!((k)->arch.vgic.in_kernel))
|
||||
#define vgic_initialized(k) ((k)->arch.vgic.ready)
|
||||
|
||||
int vgic_v2_probe(struct device_node *vgic_node,
|
||||
const struct vgic_ops **ops,
|
||||
const struct vgic_params **params);
|
||||
#ifdef CONFIG_ARM_GIC_V3
|
||||
int vgic_v3_probe(struct device_node *vgic_node,
|
||||
const struct vgic_ops **ops,
|
||||
const struct vgic_params **params);
|
||||
#else
|
||||
static inline int vgic_v3_probe(struct device_node *vgic_node,
|
||||
const struct vgic_ops **ops,
|
||||
const struct vgic_params **params)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
static inline int kvm_vgic_hyp_init(void)
|
||||
{
|
||||
|
||||
@@ -24,14 +24,10 @@ struct super_block;
|
||||
struct pacct_struct;
|
||||
struct pid_namespace;
|
||||
extern int acct_parm[]; /* for sysctl */
|
||||
extern void acct_auto_close_mnt(struct vfsmount *m);
|
||||
extern void acct_auto_close(struct super_block *sb);
|
||||
extern void acct_collect(long exitcode, int group_dead);
|
||||
extern void acct_process(void);
|
||||
extern void acct_exit_ns(struct pid_namespace *);
|
||||
#else
|
||||
#define acct_auto_close_mnt(x) do { } while (0)
|
||||
#define acct_auto_close(x) do { } while (0)
|
||||
#define acct_collect(x,y) do { } while (0)
|
||||
#define acct_process() do { } while (0)
|
||||
#define acct_exit_ns(ns) do { } while (0)
|
||||
|
||||
@@ -364,6 +364,17 @@ extern bool osc_sb_apei_support_acked;
|
||||
#define OSC_PCI_EXPRESS_CAPABILITY_CONTROL 0x00000010
|
||||
#define OSC_PCI_CONTROL_MASKS 0x0000001f
|
||||
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_QUICK 0x00000002
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_SEND_RCV 0x00000004
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_BYTE 0x00000006
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_WORD 0x00000008
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_BLOCK 0x0000000A
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_MULTIBYTE 0x0000000B
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_WORD_CALL 0x0000000C
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_BLOCK_CALL 0x0000000D
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_RAW_BYTES 0x0000000E
|
||||
#define ACPI_GSB_ACCESS_ATTRIB_RAW_PROCESS 0x0000000F
|
||||
|
||||
extern acpi_status acpi_pci_osc_control_set(acpi_handle handle,
|
||||
u32 *mask, u32 req);
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Atmel Corporation
|
||||
*
|
||||
* Driver for the AT32AP700X PS/2 controller (PSIF).
|
||||
*
|
||||
* 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 __INCLUDE_ATMEL_PWM_BL_H
|
||||
#define __INCLUDE_ATMEL_PWM_BL_H
|
||||
|
||||
/**
|
||||
* struct atmel_pwm_bl_platform_data
|
||||
* @pwm_channel: which PWM channel in the PWM module to use.
|
||||
* @pwm_frequency: PWM frequency to generate, the driver will try to be as
|
||||
* close as the prescaler allows.
|
||||
* @pwm_compare_max: value to use in the PWM channel compare register.
|
||||
* @pwm_duty_max: maximum duty cycle value, must be less than or equal to
|
||||
* pwm_compare_max.
|
||||
* @pwm_duty_min: minimum duty cycle value, must be less than pwm_duty_max.
|
||||
* @pwm_active_low: set to one if the low part of the PWM signal increases the
|
||||
* brightness of the backlight.
|
||||
* @gpio_on: GPIO line to control the backlight on/off, set to -1 if not used.
|
||||
* @on_active_low: set to one if the on/off signal is on when GPIO is low.
|
||||
*
|
||||
* This struct must be added to the platform device in the board code. It is
|
||||
* used by the atmel-pwm-bl driver to setup the GPIO to control on/off and the
|
||||
* PWM device.
|
||||
*/
|
||||
struct atmel_pwm_bl_platform_data {
|
||||
unsigned int pwm_channel;
|
||||
unsigned int pwm_frequency;
|
||||
unsigned int pwm_compare_max;
|
||||
unsigned int pwm_duty_max;
|
||||
unsigned int pwm_duty_min;
|
||||
unsigned int pwm_active_low;
|
||||
int gpio_on;
|
||||
unsigned int on_active_low;
|
||||
};
|
||||
|
||||
#endif /* __INCLUDE_ATMEL_PWM_BL_H */
|
||||
@@ -1,70 +0,0 @@
|
||||
#ifndef __LINUX_ATMEL_PWM_H
|
||||
#define __LINUX_ATMEL_PWM_H
|
||||
|
||||
/**
|
||||
* struct pwm_channel - driver handle to a PWM channel
|
||||
* @regs: base of this channel's registers
|
||||
* @index: number of this channel (0..31)
|
||||
* @mck: base clock rate, which can be prescaled and maybe subdivided
|
||||
*
|
||||
* Drivers initialize a pwm_channel structure using pwm_channel_alloc().
|
||||
* Then they configure its clock rate (derived from MCK), alignment,
|
||||
* polarity, and duty cycle by writing directly to the channel registers,
|
||||
* before enabling the channel by calling pwm_channel_enable().
|
||||
*
|
||||
* After emitting a PWM signal for the desired length of time, drivers
|
||||
* may then pwm_channel_disable() or pwm_channel_free(). Both of these
|
||||
* disable the channel, but when it's freed the IRQ is deconfigured and
|
||||
* the channel must later be re-allocated and reconfigured.
|
||||
*
|
||||
* Note that if the period or duty cycle need to be changed while the
|
||||
* PWM channel is operating, drivers must use the PWM_CUPD double buffer
|
||||
* mechanism, either polling until they change or getting implicitly
|
||||
* notified through a once-per-period interrupt handler.
|
||||
*/
|
||||
struct pwm_channel {
|
||||
void __iomem *regs;
|
||||
unsigned index;
|
||||
unsigned long mck;
|
||||
};
|
||||
|
||||
extern int pwm_channel_alloc(int index, struct pwm_channel *ch);
|
||||
extern int pwm_channel_free(struct pwm_channel *ch);
|
||||
|
||||
extern int pwm_clk_alloc(unsigned prescale, unsigned div);
|
||||
extern void pwm_clk_free(unsigned clk);
|
||||
|
||||
extern int __pwm_channel_onoff(struct pwm_channel *ch, int enabled);
|
||||
|
||||
#define pwm_channel_enable(ch) __pwm_channel_onoff((ch), 1)
|
||||
#define pwm_channel_disable(ch) __pwm_channel_onoff((ch), 0)
|
||||
|
||||
/* periodic interrupts, mostly for CUPD changes to period or cycle */
|
||||
extern int pwm_channel_handler(struct pwm_channel *ch,
|
||||
void (*handler)(struct pwm_channel *ch));
|
||||
|
||||
/* per-channel registers (banked at pwm_channel->regs) */
|
||||
#define PWM_CMR 0x00 /* mode register */
|
||||
#define PWM_CPR_CPD (1 << 10) /* set: CUPD modifies period */
|
||||
#define PWM_CPR_CPOL (1 << 9) /* set: idle high */
|
||||
#define PWM_CPR_CALG (1 << 8) /* set: center align */
|
||||
#define PWM_CPR_CPRE (0xf << 0) /* mask: rate is mck/(2^pre) */
|
||||
#define PWM_CPR_CLKA (0xb << 0) /* rate CLKA */
|
||||
#define PWM_CPR_CLKB (0xc << 0) /* rate CLKB */
|
||||
#define PWM_CDTY 0x04 /* duty cycle (max of CPRD) */
|
||||
#define PWM_CPRD 0x08 /* period (count up from zero) */
|
||||
#define PWM_CCNT 0x0c /* counter (20 bits?) */
|
||||
#define PWM_CUPD 0x10 /* update CPRD (or CDTY) next period */
|
||||
|
||||
static inline void
|
||||
pwm_channel_writel(struct pwm_channel *pwmc, unsigned offset, u32 val)
|
||||
{
|
||||
__raw_writel(val, pwmc->regs + offset);
|
||||
}
|
||||
|
||||
static inline u32 pwm_channel_readl(struct pwm_channel *pwmc, unsigned offset)
|
||||
{
|
||||
return __raw_readl(pwmc->regs + offset);
|
||||
}
|
||||
|
||||
#endif /* __LINUX_ATMEL_PWM_H */
|
||||
@@ -308,6 +308,7 @@ struct bio_integrity_payload {
|
||||
|
||||
unsigned short bip_slab; /* slab the bip came from */
|
||||
unsigned short bip_vcnt; /* # of integrity bio_vecs */
|
||||
unsigned short bip_max_vcnt; /* integrity bio_vec slots */
|
||||
unsigned bip_owns_buf:1; /* should free bip_buf */
|
||||
|
||||
struct work_struct bip_work; /* I/O completion */
|
||||
|
||||
+31
-31
@@ -88,32 +88,32 @@
|
||||
* lib/bitmap.c provides these functions:
|
||||
*/
|
||||
|
||||
extern int __bitmap_empty(const unsigned long *bitmap, int bits);
|
||||
extern int __bitmap_full(const unsigned long *bitmap, int bits);
|
||||
extern int __bitmap_empty(const unsigned long *bitmap, unsigned int nbits);
|
||||
extern int __bitmap_full(const unsigned long *bitmap, unsigned int nbits);
|
||||
extern int __bitmap_equal(const unsigned long *bitmap1,
|
||||
const unsigned long *bitmap2, int bits);
|
||||
const unsigned long *bitmap2, unsigned int nbits);
|
||||
extern void __bitmap_complement(unsigned long *dst, const unsigned long *src,
|
||||
int bits);
|
||||
unsigned int nbits);
|
||||
extern void __bitmap_shift_right(unsigned long *dst,
|
||||
const unsigned long *src, int shift, int bits);
|
||||
extern void __bitmap_shift_left(unsigned long *dst,
|
||||
const unsigned long *src, int shift, int bits);
|
||||
extern int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
|
||||
const unsigned long *bitmap2, int bits);
|
||||
const unsigned long *bitmap2, unsigned int nbits);
|
||||
extern void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1,
|
||||
const unsigned long *bitmap2, int bits);
|
||||
const unsigned long *bitmap2, unsigned int nbits);
|
||||
extern void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1,
|
||||
const unsigned long *bitmap2, int bits);
|
||||
const unsigned long *bitmap2, unsigned int nbits);
|
||||
extern int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,
|
||||
const unsigned long *bitmap2, int bits);
|
||||
const unsigned long *bitmap2, unsigned int nbits);
|
||||
extern int __bitmap_intersects(const unsigned long *bitmap1,
|
||||
const unsigned long *bitmap2, int bits);
|
||||
const unsigned long *bitmap2, unsigned int nbits);
|
||||
extern int __bitmap_subset(const unsigned long *bitmap1,
|
||||
const unsigned long *bitmap2, int bits);
|
||||
extern int __bitmap_weight(const unsigned long *bitmap, int bits);
|
||||
const unsigned long *bitmap2, unsigned int nbits);
|
||||
extern int __bitmap_weight(const unsigned long *bitmap, unsigned int nbits);
|
||||
|
||||
extern void bitmap_set(unsigned long *map, int i, int len);
|
||||
extern void bitmap_clear(unsigned long *map, int start, int nr);
|
||||
extern void bitmap_set(unsigned long *map, unsigned int start, int len);
|
||||
extern void bitmap_clear(unsigned long *map, unsigned int start, int len);
|
||||
extern unsigned long bitmap_find_next_zero_area(unsigned long *map,
|
||||
unsigned long size,
|
||||
unsigned long start,
|
||||
@@ -140,9 +140,9 @@ extern void bitmap_onto(unsigned long *dst, const unsigned long *orig,
|
||||
const unsigned long *relmap, int bits);
|
||||
extern void bitmap_fold(unsigned long *dst, const unsigned long *orig,
|
||||
int sz, int bits);
|
||||
extern int bitmap_find_free_region(unsigned long *bitmap, int bits, int order);
|
||||
extern void bitmap_release_region(unsigned long *bitmap, int pos, int order);
|
||||
extern int bitmap_allocate_region(unsigned long *bitmap, int pos, int order);
|
||||
extern int bitmap_find_free_region(unsigned long *bitmap, unsigned int bits, int order);
|
||||
extern void bitmap_release_region(unsigned long *bitmap, unsigned int pos, int order);
|
||||
extern int bitmap_allocate_region(unsigned long *bitmap, unsigned int pos, int order);
|
||||
extern void bitmap_copy_le(void *dst, const unsigned long *src, int nbits);
|
||||
extern int bitmap_ord_to_pos(const unsigned long *bitmap, int n, int bits);
|
||||
|
||||
@@ -188,15 +188,15 @@ static inline void bitmap_copy(unsigned long *dst, const unsigned long *src,
|
||||
}
|
||||
|
||||
static inline int bitmap_and(unsigned long *dst, const unsigned long *src1,
|
||||
const unsigned long *src2, int nbits)
|
||||
const unsigned long *src2, unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
return (*dst = *src1 & *src2) != 0;
|
||||
return (*dst = *src1 & *src2 & BITMAP_LAST_WORD_MASK(nbits)) != 0;
|
||||
return __bitmap_and(dst, src1, src2, nbits);
|
||||
}
|
||||
|
||||
static inline void bitmap_or(unsigned long *dst, const unsigned long *src1,
|
||||
const unsigned long *src2, int nbits)
|
||||
const unsigned long *src2, unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
*dst = *src1 | *src2;
|
||||
@@ -205,7 +205,7 @@ static inline void bitmap_or(unsigned long *dst, const unsigned long *src1,
|
||||
}
|
||||
|
||||
static inline void bitmap_xor(unsigned long *dst, const unsigned long *src1,
|
||||
const unsigned long *src2, int nbits)
|
||||
const unsigned long *src2, unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
*dst = *src1 ^ *src2;
|
||||
@@ -214,24 +214,24 @@ static inline void bitmap_xor(unsigned long *dst, const unsigned long *src1,
|
||||
}
|
||||
|
||||
static inline int bitmap_andnot(unsigned long *dst, const unsigned long *src1,
|
||||
const unsigned long *src2, int nbits)
|
||||
const unsigned long *src2, unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
return (*dst = *src1 & ~(*src2)) != 0;
|
||||
return (*dst = *src1 & ~(*src2) & BITMAP_LAST_WORD_MASK(nbits)) != 0;
|
||||
return __bitmap_andnot(dst, src1, src2, nbits);
|
||||
}
|
||||
|
||||
static inline void bitmap_complement(unsigned long *dst, const unsigned long *src,
|
||||
int nbits)
|
||||
unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
*dst = ~(*src) & BITMAP_LAST_WORD_MASK(nbits);
|
||||
*dst = ~(*src);
|
||||
else
|
||||
__bitmap_complement(dst, src, nbits);
|
||||
}
|
||||
|
||||
static inline int bitmap_equal(const unsigned long *src1,
|
||||
const unsigned long *src2, int nbits)
|
||||
const unsigned long *src2, unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
return ! ((*src1 ^ *src2) & BITMAP_LAST_WORD_MASK(nbits));
|
||||
@@ -240,7 +240,7 @@ static inline int bitmap_equal(const unsigned long *src1,
|
||||
}
|
||||
|
||||
static inline int bitmap_intersects(const unsigned long *src1,
|
||||
const unsigned long *src2, int nbits)
|
||||
const unsigned long *src2, unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
return ((*src1 & *src2) & BITMAP_LAST_WORD_MASK(nbits)) != 0;
|
||||
@@ -249,7 +249,7 @@ static inline int bitmap_intersects(const unsigned long *src1,
|
||||
}
|
||||
|
||||
static inline int bitmap_subset(const unsigned long *src1,
|
||||
const unsigned long *src2, int nbits)
|
||||
const unsigned long *src2, unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
return ! ((*src1 & ~(*src2)) & BITMAP_LAST_WORD_MASK(nbits));
|
||||
@@ -257,7 +257,7 @@ static inline int bitmap_subset(const unsigned long *src1,
|
||||
return __bitmap_subset(src1, src2, nbits);
|
||||
}
|
||||
|
||||
static inline int bitmap_empty(const unsigned long *src, int nbits)
|
||||
static inline int bitmap_empty(const unsigned long *src, unsigned nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
return ! (*src & BITMAP_LAST_WORD_MASK(nbits));
|
||||
@@ -265,7 +265,7 @@ static inline int bitmap_empty(const unsigned long *src, int nbits)
|
||||
return __bitmap_empty(src, nbits);
|
||||
}
|
||||
|
||||
static inline int bitmap_full(const unsigned long *src, int nbits)
|
||||
static inline int bitmap_full(const unsigned long *src, unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
return ! (~(*src) & BITMAP_LAST_WORD_MASK(nbits));
|
||||
@@ -273,7 +273,7 @@ static inline int bitmap_full(const unsigned long *src, int nbits)
|
||||
return __bitmap_full(src, nbits);
|
||||
}
|
||||
|
||||
static inline int bitmap_weight(const unsigned long *src, int nbits)
|
||||
static inline int bitmap_weight(const unsigned long *src, unsigned int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
return hweight_long(*src & BITMAP_LAST_WORD_MASK(nbits));
|
||||
@@ -284,7 +284,7 @@ static inline void bitmap_shift_right(unsigned long *dst,
|
||||
const unsigned long *src, int n, int nbits)
|
||||
{
|
||||
if (small_const_nbits(nbits))
|
||||
*dst = *src >> n;
|
||||
*dst = (*src & BITMAP_LAST_WORD_MASK(nbits)) >> n;
|
||||
else
|
||||
__bitmap_shift_right(dst, src, n, nbits);
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <linux/bsg.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/percpu-refcount.h>
|
||||
|
||||
#include <asm/scatterlist.h>
|
||||
|
||||
@@ -470,6 +471,7 @@ struct request_queue {
|
||||
struct mutex sysfs_lock;
|
||||
|
||||
int bypass_depth;
|
||||
int mq_freeze_depth;
|
||||
|
||||
#if defined(CONFIG_BLK_DEV_BSG)
|
||||
bsg_job_fn *bsg_job_fn;
|
||||
@@ -483,7 +485,7 @@ struct request_queue {
|
||||
#endif
|
||||
struct rcu_head rcu_head;
|
||||
wait_queue_head_t mq_freeze_wq;
|
||||
struct percpu_counter mq_usage_counter;
|
||||
struct percpu_ref mq_usage_counter;
|
||||
struct list_head all_q_node;
|
||||
|
||||
struct blk_mq_tag_set *tag_set;
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#define PHY_ID_BCM7366 0x600d8490
|
||||
#define PHY_ID_BCM7439 0x600d8480
|
||||
#define PHY_ID_BCM7445 0x600d8510
|
||||
#define PHY_ID_BCM7XXX_28 0x600d8400
|
||||
|
||||
#define PHY_BCM_OUI_MASK 0xfffffc00
|
||||
#define PHY_BCM_OUI_1 0x00206000
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define _LINUX_BYTEORDER_GENERIC_H
|
||||
|
||||
/*
|
||||
* linux/byteorder_generic.h
|
||||
* linux/byteorder/generic.h
|
||||
* Generic Byte-reordering support
|
||||
*
|
||||
* The "... p" macros, like le64_to_cpup, can be used with pointers
|
||||
|
||||
@@ -285,19 +285,9 @@ extern void ceph_msg_data_add_bio(struct ceph_msg *msg, struct bio *bio,
|
||||
|
||||
extern struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags,
|
||||
bool can_fail);
|
||||
extern void ceph_msg_kfree(struct ceph_msg *m);
|
||||
|
||||
|
||||
static inline struct ceph_msg *ceph_msg_get(struct ceph_msg *msg)
|
||||
{
|
||||
kref_get(&msg->kref);
|
||||
return msg;
|
||||
}
|
||||
extern void ceph_msg_last_put(struct kref *kref);
|
||||
static inline void ceph_msg_put(struct ceph_msg *msg)
|
||||
{
|
||||
kref_put(&msg->kref, ceph_msg_last_put);
|
||||
}
|
||||
extern struct ceph_msg *ceph_msg_get(struct ceph_msg *msg);
|
||||
extern void ceph_msg_put(struct ceph_msg *msg);
|
||||
|
||||
extern void ceph_msg_dump(struct ceph_msg *msg);
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ struct ceph_osd_request {
|
||||
struct list_head r_req_lru_item;
|
||||
struct list_head r_osd_item;
|
||||
struct list_head r_linger_item;
|
||||
struct list_head r_linger_osd;
|
||||
struct list_head r_linger_osd_item;
|
||||
struct ceph_osd *r_osd;
|
||||
struct ceph_pg r_pgid;
|
||||
int r_pg_osds[CEPH_PG_MAX_SIZE];
|
||||
@@ -325,22 +325,14 @@ extern struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *,
|
||||
|
||||
extern void ceph_osdc_set_request_linger(struct ceph_osd_client *osdc,
|
||||
struct ceph_osd_request *req);
|
||||
extern void ceph_osdc_unregister_linger_request(struct ceph_osd_client *osdc,
|
||||
struct ceph_osd_request *req);
|
||||
|
||||
static inline void ceph_osdc_get_request(struct ceph_osd_request *req)
|
||||
{
|
||||
kref_get(&req->r_kref);
|
||||
}
|
||||
extern void ceph_osdc_release_request(struct kref *kref);
|
||||
static inline void ceph_osdc_put_request(struct ceph_osd_request *req)
|
||||
{
|
||||
kref_put(&req->r_kref, ceph_osdc_release_request);
|
||||
}
|
||||
extern void ceph_osdc_get_request(struct ceph_osd_request *req);
|
||||
extern void ceph_osdc_put_request(struct ceph_osd_request *req);
|
||||
|
||||
extern int ceph_osdc_start_request(struct ceph_osd_client *osdc,
|
||||
struct ceph_osd_request *req,
|
||||
bool nofail);
|
||||
extern void ceph_osdc_cancel_request(struct ceph_osd_request *req);
|
||||
extern int ceph_osdc_wait_request(struct ceph_osd_client *osdc,
|
||||
struct ceph_osd_request *req);
|
||||
extern void ceph_osdc_sync(struct ceph_osd_client *osdc);
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#ifndef __CMA_H__
|
||||
#define __CMA_H__
|
||||
|
||||
/*
|
||||
* There is always at least global CMA area and a few optional
|
||||
* areas configured in kernel .config.
|
||||
*/
|
||||
#ifdef CONFIG_CMA_AREAS
|
||||
#define MAX_CMA_AREAS (1 + CONFIG_CMA_AREAS)
|
||||
|
||||
#else
|
||||
#define MAX_CMA_AREAS (0)
|
||||
|
||||
#endif
|
||||
|
||||
struct cma;
|
||||
|
||||
extern phys_addr_t cma_get_base(struct cma *cma);
|
||||
extern unsigned long cma_get_size(struct cma *cma);
|
||||
|
||||
extern int __init cma_declare_contiguous(phys_addr_t size,
|
||||
phys_addr_t base, phys_addr_t limit,
|
||||
phys_addr_t alignment, unsigned int order_per_bit,
|
||||
bool fixed, struct cma **res_cma);
|
||||
extern struct page *cma_alloc(struct cma *cma, int count, unsigned int align);
|
||||
extern bool cma_release(struct cma *cma, struct page *pages, int count);
|
||||
#endif
|
||||
@@ -258,6 +258,15 @@ static inline void put_cred(const struct cred *_cred)
|
||||
#define current_cred() \
|
||||
rcu_dereference_protected(current->cred, 1)
|
||||
|
||||
/**
|
||||
* current_real_cred - Access the current task's objective credentials
|
||||
*
|
||||
* Access the objective credentials of the current task. RCU-safe,
|
||||
* since nobody else can modify it.
|
||||
*/
|
||||
#define current_real_cred() \
|
||||
rcu_dereference_protected(current->real_cred, 1)
|
||||
|
||||
/**
|
||||
* __task_cred - Access a task's objective credentials
|
||||
* @task: The task to query
|
||||
|
||||
@@ -249,6 +249,7 @@ extern struct dentry * d_splice_alias(struct inode *, struct dentry *);
|
||||
extern struct dentry * d_add_ci(struct dentry *, struct inode *, struct qstr *);
|
||||
extern struct dentry *d_find_any_alias(struct inode *inode);
|
||||
extern struct dentry * d_obtain_alias(struct inode *);
|
||||
extern struct dentry * d_obtain_root(struct inode *);
|
||||
extern void shrink_dcache_sb(struct super_block *);
|
||||
extern void shrink_dcache_parent(struct dentry *);
|
||||
extern void shrink_dcache_for_umount(struct super_block *);
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#ifndef DECOMPRESS_BUNZIP2_H
|
||||
#define DECOMPRESS_BUNZIP2_H
|
||||
|
||||
int bunzip2(unsigned char *inbuf, int len,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*flush)(void*, unsigned int),
|
||||
int bunzip2(unsigned char *inbuf, long len,
|
||||
long (*fill)(void*, unsigned long),
|
||||
long (*flush)(void*, unsigned long),
|
||||
unsigned char *output,
|
||||
int *pos,
|
||||
long *pos,
|
||||
void(*error)(char *x));
|
||||
#endif
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#ifndef DECOMPRESS_GENERIC_H
|
||||
#define DECOMPRESS_GENERIC_H
|
||||
|
||||
typedef int (*decompress_fn) (unsigned char *inbuf, int len,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*flush)(void*, unsigned int),
|
||||
typedef int (*decompress_fn) (unsigned char *inbuf, long len,
|
||||
long (*fill)(void*, unsigned long),
|
||||
long (*flush)(void*, unsigned long),
|
||||
unsigned char *outbuf,
|
||||
int *posp,
|
||||
long *posp,
|
||||
void(*error)(char *x));
|
||||
|
||||
/* inbuf - input buffer
|
||||
@@ -33,7 +33,7 @@ typedef int (*decompress_fn) (unsigned char *inbuf, int len,
|
||||
|
||||
|
||||
/* Utility routine to detect the decompression method */
|
||||
decompress_fn decompress_method(const unsigned char *inbuf, int len,
|
||||
decompress_fn decompress_method(const unsigned char *inbuf, long len,
|
||||
const char **name);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#ifndef LINUX_DECOMPRESS_INFLATE_H
|
||||
#define LINUX_DECOMPRESS_INFLATE_H
|
||||
|
||||
int gunzip(unsigned char *inbuf, int len,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*flush)(void*, unsigned int),
|
||||
int gunzip(unsigned char *inbuf, long len,
|
||||
long (*fill)(void*, unsigned long),
|
||||
long (*flush)(void*, unsigned long),
|
||||
unsigned char *output,
|
||||
int *pos,
|
||||
long *pos,
|
||||
void(*error_fn)(char *x));
|
||||
#endif
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#ifndef DECOMPRESS_UNLZ4_H
|
||||
#define DECOMPRESS_UNLZ4_H
|
||||
|
||||
int unlz4(unsigned char *inbuf, int len,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*flush)(void*, unsigned int),
|
||||
int unlz4(unsigned char *inbuf, long len,
|
||||
long (*fill)(void*, unsigned long),
|
||||
long (*flush)(void*, unsigned long),
|
||||
unsigned char *output,
|
||||
int *pos,
|
||||
long *pos,
|
||||
void(*error)(char *x));
|
||||
#endif
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#ifndef DECOMPRESS_UNLZMA_H
|
||||
#define DECOMPRESS_UNLZMA_H
|
||||
|
||||
int unlzma(unsigned char *, int,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*flush)(void*, unsigned int),
|
||||
int unlzma(unsigned char *, long,
|
||||
long (*fill)(void*, unsigned long),
|
||||
long (*flush)(void*, unsigned long),
|
||||
unsigned char *output,
|
||||
int *posp,
|
||||
long *posp,
|
||||
void(*error)(char *x)
|
||||
);
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#ifndef DECOMPRESS_UNLZO_H
|
||||
#define DECOMPRESS_UNLZO_H
|
||||
|
||||
int unlzo(unsigned char *inbuf, int len,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*flush)(void*, unsigned int),
|
||||
int unlzo(unsigned char *inbuf, long len,
|
||||
long (*fill)(void*, unsigned long),
|
||||
long (*flush)(void*, unsigned long),
|
||||
unsigned char *output,
|
||||
int *pos,
|
||||
long *pos,
|
||||
void(*error)(char *x));
|
||||
#endif
|
||||
|
||||
@@ -10,10 +10,10 @@
|
||||
#ifndef DECOMPRESS_UNXZ_H
|
||||
#define DECOMPRESS_UNXZ_H
|
||||
|
||||
int unxz(unsigned char *in, int in_size,
|
||||
int (*fill)(void *dest, unsigned int size),
|
||||
int (*flush)(void *src, unsigned int size),
|
||||
unsigned char *out, int *in_used,
|
||||
int unxz(unsigned char *in, long in_size,
|
||||
long (*fill)(void *dest, unsigned long size),
|
||||
long (*flush)(void *src, unsigned long size),
|
||||
unsigned char *out, long *in_used,
|
||||
void (*error)(char *x));
|
||||
|
||||
#endif
|
||||
|
||||
@@ -53,18 +53,13 @@
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/device.h>
|
||||
|
||||
struct cma;
|
||||
struct page;
|
||||
struct device;
|
||||
|
||||
#ifdef CONFIG_DMA_CMA
|
||||
|
||||
/*
|
||||
* There is always at least global CMA area and a few optional device
|
||||
* private areas configured in kernel .config.
|
||||
*/
|
||||
#define MAX_CMA_AREAS (1 + CONFIG_CMA_AREAS)
|
||||
|
||||
extern struct cma *dma_contiguous_default_area;
|
||||
|
||||
static inline struct cma *dev_get_cma_area(struct device *dev)
|
||||
@@ -123,8 +118,6 @@ bool dma_release_from_contiguous(struct device *dev, struct page *pages,
|
||||
|
||||
#else
|
||||
|
||||
#define MAX_CMA_AREAS (0)
|
||||
|
||||
static inline struct cma *dev_get_cma_area(struct device *dev)
|
||||
{
|
||||
return NULL;
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
*/
|
||||
typedef s32 dma_cookie_t;
|
||||
#define DMA_MIN_COOKIE 1
|
||||
#define DMA_MAX_COOKIE INT_MAX
|
||||
|
||||
static inline int dma_submit_error(dma_cookie_t cookie)
|
||||
{
|
||||
@@ -671,7 +670,7 @@ struct dma_device {
|
||||
struct dma_async_tx_descriptor *(*device_prep_dma_cyclic)(
|
||||
struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,
|
||||
size_t period_len, enum dma_transfer_direction direction,
|
||||
unsigned long flags, void *context);
|
||||
unsigned long flags);
|
||||
struct dma_async_tx_descriptor *(*device_prep_interleaved_dma)(
|
||||
struct dma_chan *chan, struct dma_interleaved_template *xt,
|
||||
unsigned long flags);
|
||||
@@ -746,7 +745,7 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_cyclic(
|
||||
unsigned long flags)
|
||||
{
|
||||
return chan->device->device_prep_dma_cyclic(chan, buf_addr, buf_len,
|
||||
period_len, dir, flags, NULL);
|
||||
period_len, dir, flags);
|
||||
}
|
||||
|
||||
static inline struct dma_async_tx_descriptor *dmaengine_prep_interleaved_dma(
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
#endif
|
||||
|
||||
extern const char *drbd_buildtag(void);
|
||||
#define REL_VERSION "8.4.3"
|
||||
#define REL_VERSION "8.4.5"
|
||||
#define API_VERSION 1
|
||||
#define PRO_VERSION_MIN 86
|
||||
#define PRO_VERSION_MAX 101
|
||||
@@ -245,7 +245,7 @@ enum drbd_disk_state {
|
||||
D_DISKLESS,
|
||||
D_ATTACHING, /* In the process of reading the meta-data */
|
||||
D_FAILED, /* Becomes D_DISKLESS as soon as we told it the peer */
|
||||
/* when >= D_FAILED it is legal to access mdev->bc */
|
||||
/* when >= D_FAILED it is legal to access mdev->ldev */
|
||||
D_NEGOTIATING, /* Late attaching state, we need to talk to the peer */
|
||||
D_INCONSISTENT,
|
||||
D_OUTDATED,
|
||||
|
||||
@@ -171,6 +171,10 @@ GENL_struct(DRBD_NLA_NET_CONF, 5, net_conf,
|
||||
__flg_field(28, DRBD_GENLA_F_MANDATORY | DRBD_F_INVARIANT, tentative)
|
||||
__flg_field_def(29, DRBD_GENLA_F_MANDATORY, use_rle, DRBD_USE_RLE_DEF)
|
||||
/* 9: __u32_field_def(30, DRBD_GENLA_F_MANDATORY, fencing_policy, DRBD_FENCING_DEF) */
|
||||
/* 9: __str_field_def(31, DRBD_GENLA_F_MANDATORY, name, SHARED_SECRET_MAX) */
|
||||
/* 9: __u32_field(32, DRBD_F_REQUIRED | DRBD_F_INVARIANT, peer_node_id) */
|
||||
__flg_field_def(33, 0 /* OPTIONAL */, csums_after_crash_only, DRBD_CSUMS_AFTER_CRASH_ONLY_DEF)
|
||||
__u32_field_def(34, 0 /* OPTIONAL */, sock_check_timeo, DRBD_SOCKET_CHECK_TIMEO_DEF)
|
||||
)
|
||||
|
||||
GENL_struct(DRBD_NLA_SET_ROLE_PARMS, 6, set_role_parms,
|
||||
|
||||
@@ -214,6 +214,7 @@
|
||||
#define DRBD_ALLOW_TWO_PRIMARIES_DEF 0
|
||||
#define DRBD_ALWAYS_ASBP_DEF 0
|
||||
#define DRBD_USE_RLE_DEF 1
|
||||
#define DRBD_CSUMS_AFTER_CRASH_ONLY_DEF 0
|
||||
|
||||
#define DRBD_AL_STRIPES_MIN 1
|
||||
#define DRBD_AL_STRIPES_MAX 1024
|
||||
@@ -224,4 +225,9 @@
|
||||
#define DRBD_AL_STRIPE_SIZE_MAX 16777216
|
||||
#define DRBD_AL_STRIPE_SIZE_DEF 32
|
||||
#define DRBD_AL_STRIPE_SIZE_SCALE 'k' /* kilobytes */
|
||||
|
||||
#define DRBD_SOCKET_CHECK_TIMEO_MIN 0
|
||||
#define DRBD_SOCKET_CHECK_TIMEO_MAX DRBD_PING_TIMEO_MAX
|
||||
#define DRBD_SOCKET_CHECK_TIMEO_DEF 0
|
||||
#define DRBD_SOCKET_CHECK_TIMEO_SCALE '1'
|
||||
#endif
|
||||
|
||||
@@ -194,6 +194,9 @@ static inline char *mc_event_error_type(const unsigned int err_type)
|
||||
* @MEM_DDR3: DDR3 RAM
|
||||
* @MEM_RDDR3: Registered DDR3 RAM
|
||||
* This is a variant of the DDR3 memories.
|
||||
* @MEM_DDR4: DDR4 RAM
|
||||
* @MEM_RDDR4: Registered DDR4 RAM
|
||||
* This is a variant of the DDR4 memories.
|
||||
*/
|
||||
enum mem_type {
|
||||
MEM_EMPTY = 0,
|
||||
@@ -213,6 +216,8 @@ enum mem_type {
|
||||
MEM_XDR,
|
||||
MEM_DDR3,
|
||||
MEM_RDDR3,
|
||||
MEM_DDR4,
|
||||
MEM_RDDR4,
|
||||
};
|
||||
|
||||
#define MEM_FLAG_EMPTY BIT(MEM_EMPTY)
|
||||
|
||||
@@ -1156,6 +1156,9 @@ int efivars_sysfs_init(void);
|
||||
#ifdef CONFIG_EFI_RUNTIME_MAP
|
||||
int efi_runtime_map_init(struct kobject *);
|
||||
void efi_runtime_map_setup(void *, int, u32);
|
||||
int efi_get_runtime_map_size(void);
|
||||
int efi_get_runtime_map_desc_size(void);
|
||||
int efi_runtime_map_copy(void *buf, size_t bufsz);
|
||||
#else
|
||||
static inline int efi_runtime_map_init(struct kobject *kobj)
|
||||
{
|
||||
@@ -1164,6 +1167,22 @@ static inline int efi_runtime_map_init(struct kobject *kobj)
|
||||
|
||||
static inline void
|
||||
efi_runtime_map_setup(void *map, int nr_entries, u32 desc_size) {}
|
||||
|
||||
static inline int efi_get_runtime_map_size(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int efi_get_runtime_map_desc_size(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int efi_runtime_map_copy(void *buf, size_t bufsz)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* prototypes shared between arch specific and generic stub code */
|
||||
|
||||
+1
-1
@@ -553,7 +553,7 @@ static inline struct apertures_struct *alloc_apertures(unsigned int max_num) {
|
||||
#define fb_memcpy_fromfb sbus_memcpy_fromio
|
||||
#define fb_memcpy_tofb sbus_memcpy_toio
|
||||
|
||||
#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__avr32__) || defined(__bfin__)
|
||||
#elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__avr32__) || defined(__bfin__) || defined(__arm__)
|
||||
|
||||
#define fb_readb __raw_readb
|
||||
#define fb_readw __raw_readw
|
||||
|
||||
+30
-3
@@ -387,7 +387,7 @@ struct address_space {
|
||||
struct inode *host; /* owner: inode, block_device */
|
||||
struct radix_tree_root page_tree; /* radix tree of all pages */
|
||||
spinlock_t tree_lock; /* and lock protecting it */
|
||||
unsigned int i_mmap_writable;/* count VM_SHARED mappings */
|
||||
atomic_t i_mmap_writable;/* count VM_SHARED mappings */
|
||||
struct rb_root i_mmap; /* tree of private and shared mappings */
|
||||
struct list_head i_mmap_nonlinear;/*list VM_NONLINEAR mappings */
|
||||
struct mutex i_mmap_mutex; /* protect tree, count, list */
|
||||
@@ -470,10 +470,35 @@ static inline int mapping_mapped(struct address_space *mapping)
|
||||
* Note that i_mmap_writable counts all VM_SHARED vmas: do_mmap_pgoff
|
||||
* marks vma as VM_SHARED if it is shared, and the file was opened for
|
||||
* writing i.e. vma may be mprotected writable even if now readonly.
|
||||
*
|
||||
* If i_mmap_writable is negative, no new writable mappings are allowed. You
|
||||
* can only deny writable mappings, if none exists right now.
|
||||
*/
|
||||
static inline int mapping_writably_mapped(struct address_space *mapping)
|
||||
{
|
||||
return mapping->i_mmap_writable != 0;
|
||||
return atomic_read(&mapping->i_mmap_writable) > 0;
|
||||
}
|
||||
|
||||
static inline int mapping_map_writable(struct address_space *mapping)
|
||||
{
|
||||
return atomic_inc_unless_negative(&mapping->i_mmap_writable) ?
|
||||
0 : -EPERM;
|
||||
}
|
||||
|
||||
static inline void mapping_unmap_writable(struct address_space *mapping)
|
||||
{
|
||||
atomic_dec(&mapping->i_mmap_writable);
|
||||
}
|
||||
|
||||
static inline int mapping_deny_writable(struct address_space *mapping)
|
||||
{
|
||||
return atomic_dec_unless_positive(&mapping->i_mmap_writable) ?
|
||||
0 : -EBUSY;
|
||||
}
|
||||
|
||||
static inline void mapping_allow_writable(struct address_space *mapping)
|
||||
{
|
||||
atomic_inc(&mapping->i_mmap_writable);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1250,6 +1275,7 @@ struct super_block {
|
||||
|
||||
/* AIO completions deferred from interrupt context */
|
||||
struct workqueue_struct *s_dio_done_wq;
|
||||
struct hlist_head s_pins;
|
||||
|
||||
/*
|
||||
* Keep the lru lists last in the structure so they always sit on their
|
||||
@@ -2335,6 +2361,7 @@ extern int do_pipe_flags(int *, int);
|
||||
|
||||
extern int kernel_read(struct file *, loff_t, char *, unsigned long);
|
||||
extern ssize_t kernel_write(struct file *, const char *, size_t, loff_t);
|
||||
extern ssize_t __kernel_write(struct file *, const char *, size_t, loff_t *);
|
||||
extern struct file * open_exec(const char *);
|
||||
|
||||
/* fs/dcache.c -- generic fs support functions */
|
||||
@@ -2688,7 +2715,7 @@ static const struct file_operations __fops = { \
|
||||
.read = simple_attr_read, \
|
||||
.write = simple_attr_write, \
|
||||
.llseek = generic_file_llseek, \
|
||||
};
|
||||
}
|
||||
|
||||
static inline __printf(1, 2)
|
||||
void __simple_attr_check_format(const char *fmt, ...)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#include <linux/fs.h>
|
||||
|
||||
struct fs_pin {
|
||||
atomic_long_t count;
|
||||
union {
|
||||
struct {
|
||||
struct hlist_node s_list;
|
||||
struct hlist_node m_list;
|
||||
};
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
void (*kill)(struct fs_pin *);
|
||||
};
|
||||
|
||||
void pin_put(struct fs_pin *);
|
||||
void pin_remove(struct fs_pin *);
|
||||
void pin_insert(struct fs_pin *, struct vfsmount *);
|
||||
@@ -322,16 +322,18 @@ extern int fsnotify_fasync(int fd, struct file *file, int on);
|
||||
extern void fsnotify_destroy_event(struct fsnotify_group *group,
|
||||
struct fsnotify_event *event);
|
||||
/* attach the event to the group notification queue */
|
||||
extern int fsnotify_add_notify_event(struct fsnotify_group *group,
|
||||
struct fsnotify_event *event,
|
||||
int (*merge)(struct list_head *,
|
||||
struct fsnotify_event *));
|
||||
extern int fsnotify_add_event(struct fsnotify_group *group,
|
||||
struct fsnotify_event *event,
|
||||
int (*merge)(struct list_head *,
|
||||
struct fsnotify_event *));
|
||||
/* Remove passed event from groups notification queue */
|
||||
extern void fsnotify_remove_event(struct fsnotify_group *group, struct fsnotify_event *event);
|
||||
/* true if the group notification queue is empty */
|
||||
extern bool fsnotify_notify_queue_is_empty(struct fsnotify_group *group);
|
||||
/* return, but do not dequeue the first event on the notification queue */
|
||||
extern struct fsnotify_event *fsnotify_peek_notify_event(struct fsnotify_group *group);
|
||||
extern struct fsnotify_event *fsnotify_peek_first_event(struct fsnotify_group *group);
|
||||
/* return AND dequeue the first event on the notification queue */
|
||||
extern struct fsnotify_event *fsnotify_remove_notify_event(struct fsnotify_group *group);
|
||||
extern struct fsnotify_event *fsnotify_remove_first_event(struct fsnotify_group *group);
|
||||
|
||||
/* functions used to manipulate the marks attached to inodes */
|
||||
|
||||
|
||||
+11
-3
@@ -102,6 +102,15 @@ enum {
|
||||
FTRACE_OPS_FL_DELETED = 1 << 8,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
/* The hash used to know what functions callbacks trace */
|
||||
struct ftrace_ops_hash {
|
||||
struct ftrace_hash *notrace_hash;
|
||||
struct ftrace_hash *filter_hash;
|
||||
struct mutex regex_lock;
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Note, ftrace_ops can be referenced outside of RCU protection.
|
||||
* (Although, for perf, the control ops prevent that). If ftrace_ops is
|
||||
@@ -121,10 +130,9 @@ struct ftrace_ops {
|
||||
int __percpu *disabled;
|
||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||
int nr_trampolines;
|
||||
struct ftrace_hash *notrace_hash;
|
||||
struct ftrace_hash *filter_hash;
|
||||
struct ftrace_ops_hash local_hash;
|
||||
struct ftrace_ops_hash *func_hash;
|
||||
struct ftrace_hash *tramp_hash;
|
||||
struct mutex regex_lock;
|
||||
unsigned long trampoline;
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -571,40 +571,6 @@ do { \
|
||||
__trace_printk(ip, fmt, ##args); \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* tracepoint_string - register constant persistent string to trace system
|
||||
* @str - a constant persistent string that will be referenced in tracepoints
|
||||
*
|
||||
* If constant strings are being used in tracepoints, it is faster and
|
||||
* more efficient to just save the pointer to the string and reference
|
||||
* that with a printf "%s" instead of saving the string in the ring buffer
|
||||
* and wasting space and time.
|
||||
*
|
||||
* The problem with the above approach is that userspace tools that read
|
||||
* the binary output of the trace buffers do not have access to the string.
|
||||
* Instead they just show the address of the string which is not very
|
||||
* useful to users.
|
||||
*
|
||||
* With tracepoint_string(), the string will be registered to the tracing
|
||||
* system and exported to userspace via the debugfs/tracing/printk_formats
|
||||
* file that maps the string address to the string text. This way userspace
|
||||
* tools that read the binary buffers have a way to map the pointers to
|
||||
* the ASCII strings they represent.
|
||||
*
|
||||
* The @str used must be a constant string and persistent as it would not
|
||||
* make sense to show a string that no longer exists. But it is still fine
|
||||
* to be used with modules, because when modules are unloaded, if they
|
||||
* had tracepoints, the ring buffers are cleared too. As long as the string
|
||||
* does not change during the life of the module, it is fine to use
|
||||
* tracepoint_string() within a module.
|
||||
*/
|
||||
#define tracepoint_string(str) \
|
||||
({ \
|
||||
static const char *___tp_str __tracepoint_string = str; \
|
||||
___tp_str; \
|
||||
})
|
||||
#define __tracepoint_string __attribute__((section("__tracepoint_str")))
|
||||
|
||||
#ifdef CONFIG_PERF_EVENTS
|
||||
struct perf_event;
|
||||
|
||||
|
||||
+1
-1
@@ -360,7 +360,7 @@ extern unsigned long get_zeroed_page(gfp_t gfp_mask);
|
||||
void *alloc_pages_exact(size_t size, gfp_t gfp_mask);
|
||||
void free_pages_exact(void *virt, size_t size);
|
||||
/* This is different from alloc_pages_exact_node !!! */
|
||||
void *alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask);
|
||||
void * __meminit alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask);
|
||||
|
||||
#define __get_free_page(gfp_mask) \
|
||||
__get_free_pages((gfp_mask), 0)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
#ifndef _LINUX_GLOB_H
|
||||
#define _LINUX_GLOB_H
|
||||
|
||||
#include <linux/types.h> /* For bool */
|
||||
#include <linux/compiler.h> /* For __pure */
|
||||
|
||||
bool __pure glob_match(char const *pat, char const *str);
|
||||
|
||||
#endif /* _LINUX_GLOB_H */
|
||||
@@ -16,32 +16,81 @@ struct device;
|
||||
*/
|
||||
struct gpio_desc;
|
||||
|
||||
#define GPIOD_FLAGS_BIT_DIR_SET BIT(0)
|
||||
#define GPIOD_FLAGS_BIT_DIR_OUT BIT(1)
|
||||
#define GPIOD_FLAGS_BIT_DIR_VAL BIT(2)
|
||||
|
||||
/**
|
||||
* Optional flags that can be passed to one of gpiod_* to configure direction
|
||||
* and output value. These values cannot be OR'd.
|
||||
*/
|
||||
enum gpiod_flags {
|
||||
GPIOD_ASIS = 0,
|
||||
GPIOD_IN = GPIOD_FLAGS_BIT_DIR_SET,
|
||||
GPIOD_OUT_LOW = GPIOD_FLAGS_BIT_DIR_SET | GPIOD_FLAGS_BIT_DIR_OUT,
|
||||
GPIOD_OUT_HIGH = GPIOD_FLAGS_BIT_DIR_SET | GPIOD_FLAGS_BIT_DIR_OUT |
|
||||
GPIOD_FLAGS_BIT_DIR_VAL,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_GPIOLIB
|
||||
|
||||
/* Acquire and dispose GPIOs */
|
||||
struct gpio_desc *__must_check gpiod_get(struct device *dev,
|
||||
const char *con_id);
|
||||
struct gpio_desc *__must_check gpiod_get_index(struct device *dev,
|
||||
struct gpio_desc *__must_check __gpiod_get(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags);
|
||||
#define __gpiod_get(dev, con_id, flags, ...) __gpiod_get(dev, con_id, flags)
|
||||
#define gpiod_get(varargs...) __gpiod_get(varargs, 0)
|
||||
struct gpio_desc *__must_check __gpiod_get_index(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int idx);
|
||||
struct gpio_desc *__must_check gpiod_get_optional(struct device *dev,
|
||||
const char *con_id);
|
||||
struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev,
|
||||
unsigned int idx,
|
||||
enum gpiod_flags flags);
|
||||
#define __gpiod_get_index(dev, con_id, index, flags, ...) \
|
||||
__gpiod_get_index(dev, con_id, index, flags)
|
||||
#define gpiod_get_index(varargs...) __gpiod_get_index(varargs, 0)
|
||||
struct gpio_desc *__must_check __gpiod_get_optional(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags);
|
||||
#define __gpiod_get_optional(dev, con_id, flags, ...) \
|
||||
__gpiod_get_optional(dev, con_id, flags)
|
||||
#define gpiod_get_optional(varargs...) __gpiod_get_optional(varargs, 0)
|
||||
struct gpio_desc *__must_check __gpiod_get_index_optional(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int index);
|
||||
unsigned int index,
|
||||
enum gpiod_flags flags);
|
||||
#define __gpiod_get_index_optional(dev, con_id, index, flags, ...) \
|
||||
__gpiod_get_index_optional(dev, con_id, index, flags)
|
||||
#define gpiod_get_index_optional(varargs...) \
|
||||
__gpiod_get_index_optional(varargs, 0)
|
||||
|
||||
void gpiod_put(struct gpio_desc *desc);
|
||||
|
||||
struct gpio_desc *__must_check devm_gpiod_get(struct device *dev,
|
||||
const char *con_id);
|
||||
struct gpio_desc *__must_check devm_gpiod_get_index(struct device *dev,
|
||||
struct gpio_desc *__must_check __devm_gpiod_get(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags);
|
||||
#define __devm_gpiod_get(dev, con_id, flags, ...) \
|
||||
__devm_gpiod_get(dev, con_id, flags)
|
||||
#define devm_gpiod_get(varargs...) __devm_gpiod_get(varargs, 0)
|
||||
struct gpio_desc *__must_check __devm_gpiod_get_index(struct device *dev,
|
||||
const char *con_id,
|
||||
unsigned int idx);
|
||||
struct gpio_desc *__must_check devm_gpiod_get_optional(struct device *dev,
|
||||
const char *con_id);
|
||||
unsigned int idx,
|
||||
enum gpiod_flags flags);
|
||||
#define __devm_gpiod_get_index(dev, con_id, index, flags, ...) \
|
||||
__devm_gpiod_get_index(dev, con_id, index, flags)
|
||||
#define devm_gpiod_get_index(varargs...) __devm_gpiod_get_index(varargs, 0)
|
||||
struct gpio_desc *__must_check __devm_gpiod_get_optional(struct device *dev,
|
||||
const char *con_id,
|
||||
enum gpiod_flags flags);
|
||||
#define __devm_gpiod_get_optional(dev, con_id, flags, ...) \
|
||||
__devm_gpiod_get_optional(dev, con_id, flags)
|
||||
#define devm_gpiod_get_optional(varargs...) \
|
||||
__devm_gpiod_get_optional(varargs, 0)
|
||||
struct gpio_desc *__must_check
|
||||
devm_gpiod_get_index_optional(struct device *dev, const char *con_id,
|
||||
unsigned int index);
|
||||
__devm_gpiod_get_index_optional(struct device *dev, const char *con_id,
|
||||
unsigned int index, enum gpiod_flags flags);
|
||||
#define __devm_gpiod_get_index_optional(dev, con_id, index, flags, ...) \
|
||||
__devm_gpiod_get_index_optional(dev, con_id, index, flags)
|
||||
#define devm_gpiod_get_index_optional(varargs...) \
|
||||
__devm_gpiod_get_index_optional(varargs, 0)
|
||||
|
||||
void devm_gpiod_put(struct device *dev, struct gpio_desc *desc);
|
||||
|
||||
|
||||
@@ -141,73 +141,16 @@ extern const char *gpiochip_is_requested(struct gpio_chip *chip,
|
||||
|
||||
/* add/remove chips */
|
||||
extern int gpiochip_add(struct gpio_chip *chip);
|
||||
extern int __must_check gpiochip_remove(struct gpio_chip *chip);
|
||||
extern int gpiochip_remove(struct gpio_chip *chip);
|
||||
extern struct gpio_chip *gpiochip_find(void *data,
|
||||
int (*match)(struct gpio_chip *chip, void *data));
|
||||
|
||||
/* lock/unlock as IRQ */
|
||||
int gpiod_lock_as_irq(struct gpio_desc *desc);
|
||||
void gpiod_unlock_as_irq(struct gpio_desc *desc);
|
||||
int gpio_lock_as_irq(struct gpio_chip *chip, unsigned int offset);
|
||||
void gpio_unlock_as_irq(struct gpio_chip *chip, unsigned int offset);
|
||||
|
||||
struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc);
|
||||
|
||||
struct gpio_desc *gpiochip_get_desc(struct gpio_chip *chip,
|
||||
u16 hwnum);
|
||||
|
||||
enum gpio_lookup_flags {
|
||||
GPIO_ACTIVE_HIGH = (0 << 0),
|
||||
GPIO_ACTIVE_LOW = (1 << 0),
|
||||
GPIO_OPEN_DRAIN = (1 << 1),
|
||||
GPIO_OPEN_SOURCE = (1 << 2),
|
||||
};
|
||||
|
||||
/**
|
||||
* struct gpiod_lookup - lookup table
|
||||
* @chip_label: name of the chip the GPIO belongs to
|
||||
* @chip_hwnum: hardware number (i.e. relative to the chip) of the GPIO
|
||||
* @con_id: name of the GPIO from the device's point of view
|
||||
* @idx: index of the GPIO in case several GPIOs share the same name
|
||||
* @flags: mask of GPIO_* values
|
||||
*
|
||||
* gpiod_lookup is a lookup table for associating GPIOs to specific devices and
|
||||
* functions using platform data.
|
||||
*/
|
||||
struct gpiod_lookup {
|
||||
const char *chip_label;
|
||||
u16 chip_hwnum;
|
||||
const char *con_id;
|
||||
unsigned int idx;
|
||||
enum gpio_lookup_flags flags;
|
||||
};
|
||||
|
||||
struct gpiod_lookup_table {
|
||||
struct list_head list;
|
||||
const char *dev_id;
|
||||
struct gpiod_lookup table[];
|
||||
};
|
||||
|
||||
/*
|
||||
* Simple definition of a single GPIO under a con_id
|
||||
*/
|
||||
#define GPIO_LOOKUP(_chip_label, _chip_hwnum, _con_id, _flags) \
|
||||
GPIO_LOOKUP_IDX(_chip_label, _chip_hwnum, _con_id, 0, _flags)
|
||||
|
||||
/*
|
||||
* Use this macro if you need to have several GPIOs under the same con_id.
|
||||
* Each GPIO needs to use a different index and can be accessed using
|
||||
* gpiod_get_index()
|
||||
*/
|
||||
#define GPIO_LOOKUP_IDX(_chip_label, _chip_hwnum, _con_id, _idx, _flags) \
|
||||
{ \
|
||||
.chip_label = _chip_label, \
|
||||
.chip_hwnum = _chip_hwnum, \
|
||||
.con_id = _con_id, \
|
||||
.idx = _idx, \
|
||||
.flags = _flags, \
|
||||
}
|
||||
|
||||
void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
|
||||
|
||||
#ifdef CONFIG_GPIOLIB_IRQCHIP
|
||||
|
||||
void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip,
|
||||
@@ -223,6 +166,9 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip,
|
||||
|
||||
#endif /* CONFIG_GPIO_IRQCHIP */
|
||||
|
||||
int gpiochip_request_own_desc(struct gpio_desc *desc, const char *label);
|
||||
void gpiochip_free_own_desc(struct gpio_desc *desc);
|
||||
|
||||
#else /* CONFIG_GPIOLIB */
|
||||
|
||||
static inline struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc)
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
#ifndef __LINUX_GPIO_MACHINE_H
|
||||
#define __LINUX_GPIO_MACHINE_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/list.h>
|
||||
|
||||
enum gpio_lookup_flags {
|
||||
GPIO_ACTIVE_HIGH = (0 << 0),
|
||||
GPIO_ACTIVE_LOW = (1 << 0),
|
||||
GPIO_OPEN_DRAIN = (1 << 1),
|
||||
GPIO_OPEN_SOURCE = (1 << 2),
|
||||
};
|
||||
|
||||
/**
|
||||
* struct gpiod_lookup - lookup table
|
||||
* @chip_label: name of the chip the GPIO belongs to
|
||||
* @chip_hwnum: hardware number (i.e. relative to the chip) of the GPIO
|
||||
* @con_id: name of the GPIO from the device's point of view
|
||||
* @idx: index of the GPIO in case several GPIOs share the same name
|
||||
* @flags: mask of GPIO_* values
|
||||
*
|
||||
* gpiod_lookup is a lookup table for associating GPIOs to specific devices and
|
||||
* functions using platform data.
|
||||
*/
|
||||
struct gpiod_lookup {
|
||||
const char *chip_label;
|
||||
u16 chip_hwnum;
|
||||
const char *con_id;
|
||||
unsigned int idx;
|
||||
enum gpio_lookup_flags flags;
|
||||
};
|
||||
|
||||
struct gpiod_lookup_table {
|
||||
struct list_head list;
|
||||
const char *dev_id;
|
||||
struct gpiod_lookup table[];
|
||||
};
|
||||
|
||||
/*
|
||||
* Simple definition of a single GPIO under a con_id
|
||||
*/
|
||||
#define GPIO_LOOKUP(_chip_label, _chip_hwnum, _con_id, _flags) \
|
||||
GPIO_LOOKUP_IDX(_chip_label, _chip_hwnum, _con_id, 0, _flags)
|
||||
|
||||
/*
|
||||
* Use this macro if you need to have several GPIOs under the same con_id.
|
||||
* Each GPIO needs to use a different index and can be accessed using
|
||||
* gpiod_get_index()
|
||||
*/
|
||||
#define GPIO_LOOKUP_IDX(_chip_label, _chip_hwnum, _con_id, _idx, _flags) \
|
||||
{ \
|
||||
.chip_label = _chip_label, \
|
||||
.chip_hwnum = _chip_hwnum, \
|
||||
.con_id = _con_id, \
|
||||
.idx = _idx, \
|
||||
.flags = _flags, \
|
||||
}
|
||||
|
||||
void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
|
||||
|
||||
#endif /* __LINUX_GPIO_MACHINE_H */
|
||||
@@ -265,6 +265,7 @@ struct hid_item {
|
||||
#define HID_CONNECT_HIDDEV 0x08
|
||||
#define HID_CONNECT_HIDDEV_FORCE 0x10
|
||||
#define HID_CONNECT_FF 0x20
|
||||
#define HID_CONNECT_DRIVER 0x40
|
||||
#define HID_CONNECT_DEFAULT (HID_CONNECT_HIDINPUT|HID_CONNECT_HIDRAW| \
|
||||
HID_CONNECT_HIDDEV|HID_CONNECT_FF)
|
||||
|
||||
@@ -287,6 +288,7 @@ struct hid_item {
|
||||
#define HID_QUIRK_HIDINPUT_FORCE 0x00000080
|
||||
#define HID_QUIRK_NO_EMPTY_INPUT 0x00000100
|
||||
#define HID_QUIRK_NO_INIT_INPUT_REPORTS 0x00000200
|
||||
#define HID_QUIRK_ALWAYS_POLL 0x00000400
|
||||
#define HID_QUIRK_SKIP_OUTPUT_REPORTS 0x00010000
|
||||
#define HID_QUIRK_SKIP_OUTPUT_REPORT_ID 0x00020000
|
||||
#define HID_QUIRK_NO_OUTPUT_REPORTS_ON_INTR_EP 0x00040000
|
||||
@@ -311,6 +313,11 @@ struct hid_item {
|
||||
*/
|
||||
#define HID_GROUP_RMI 0x0100
|
||||
|
||||
/*
|
||||
* Vendor specific HID device groups
|
||||
*/
|
||||
#define HID_GROUP_WACOM 0x0101
|
||||
|
||||
/*
|
||||
* This is the global environment of the parser. This information is
|
||||
* persistent for main-items. The global environment can be saved and
|
||||
@@ -435,6 +442,7 @@ struct hid_output_fifo {
|
||||
#define HID_CLAIMED_INPUT 1
|
||||
#define HID_CLAIMED_HIDDEV 2
|
||||
#define HID_CLAIMED_HIDRAW 4
|
||||
#define HID_CLAIMED_DRIVER 8
|
||||
|
||||
#define HID_STAT_ADDED 1
|
||||
#define HID_STAT_PARSED 2
|
||||
|
||||
@@ -93,7 +93,7 @@ static inline int kmap_atomic_idx_push(void)
|
||||
|
||||
#ifdef CONFIG_DEBUG_HIGHMEM
|
||||
WARN_ON_ONCE(in_irq() && !irqs_disabled());
|
||||
BUG_ON(idx > KM_TYPE_NR);
|
||||
BUG_ON(idx >= KM_TYPE_NR);
|
||||
#endif
|
||||
return idx;
|
||||
}
|
||||
|
||||
@@ -164,12 +164,15 @@ int host1x_job_submit(struct host1x_job *job);
|
||||
*/
|
||||
|
||||
struct host1x_reloc {
|
||||
struct host1x_bo *cmdbuf;
|
||||
u32 cmdbuf_offset;
|
||||
struct host1x_bo *target;
|
||||
u32 target_offset;
|
||||
u32 shift;
|
||||
u32 pad;
|
||||
struct {
|
||||
struct host1x_bo *bo;
|
||||
unsigned long offset;
|
||||
} cmdbuf;
|
||||
struct {
|
||||
struct host1x_bo *bo;
|
||||
unsigned long offset;
|
||||
} target;
|
||||
unsigned long shift;
|
||||
};
|
||||
|
||||
struct host1x_job {
|
||||
|
||||
@@ -93,10 +93,6 @@ extern bool is_vma_temporary_stack(struct vm_area_struct *vma);
|
||||
#endif /* CONFIG_DEBUG_VM */
|
||||
|
||||
extern unsigned long transparent_hugepage_flags;
|
||||
extern int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm,
|
||||
pmd_t *dst_pmd, pmd_t *src_pmd,
|
||||
struct vm_area_struct *vma,
|
||||
unsigned long addr, unsigned long end);
|
||||
extern int split_huge_page_to_list(struct page *page, struct list_head *list);
|
||||
static inline int split_huge_page(struct page *page)
|
||||
{
|
||||
|
||||
@@ -87,7 +87,6 @@ pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud);
|
||||
#endif
|
||||
|
||||
extern unsigned long hugepages_treat_as_movable;
|
||||
extern const unsigned long hugetlb_zero, hugetlb_infinity;
|
||||
extern int sysctl_hugetlb_shm_group;
|
||||
extern struct list_head huge_boot_pages;
|
||||
|
||||
|
||||
@@ -577,4 +577,20 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
|
||||
}
|
||||
#endif /* CONFIG_OF */
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
void acpi_i2c_register_devices(struct i2c_adapter *adap);
|
||||
#else
|
||||
static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) { }
|
||||
#endif /* CONFIG_ACPI */
|
||||
|
||||
#ifdef CONFIG_ACPI_I2C_OPREGION
|
||||
int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
|
||||
void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
|
||||
#else
|
||||
static inline void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
|
||||
{ }
|
||||
static inline int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
|
||||
{ return 0; }
|
||||
#endif /* CONFIG_ACPI_I2C_OPREGION */
|
||||
|
||||
#endif /* _LINUX_I2C_H */
|
||||
|
||||
@@ -17,9 +17,6 @@
|
||||
|
||||
/* The platform data for the Atmel maXTouch touchscreen driver */
|
||||
struct mxt_platform_data {
|
||||
const u8 *config;
|
||||
size_t config_length;
|
||||
u32 config_crc;
|
||||
unsigned long irqflags;
|
||||
u8 t19_num_keys;
|
||||
const unsigned int *t19_keymap;
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
#ifndef __LINUX_I2C_S6000_H
|
||||
#define __LINUX_I2C_S6000_H
|
||||
|
||||
struct s6_i2c_platform_data {
|
||||
const char *clock; /* the clock to use */
|
||||
int bus_num; /* the bus number to register */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -187,7 +187,6 @@ vlan_dev_get_egress_qos_mask(struct net_device *dev, u32 skprio)
|
||||
}
|
||||
|
||||
extern bool vlan_do_receive(struct sk_buff **skb);
|
||||
extern struct sk_buff *vlan_untag(struct sk_buff *skb);
|
||||
|
||||
extern int vlan_vid_add(struct net_device *dev, __be16 proto, u16 vid);
|
||||
extern void vlan_vid_del(struct net_device *dev, __be16 proto, u16 vid);
|
||||
@@ -241,11 +240,6 @@ static inline bool vlan_do_receive(struct sk_buff **skb)
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline struct sk_buff *vlan_untag(struct sk_buff *skb)
|
||||
{
|
||||
return skb;
|
||||
}
|
||||
|
||||
static inline int vlan_vid_add(struct net_device *dev, __be16 proto, u16 vid)
|
||||
{
|
||||
return 0;
|
||||
|
||||
@@ -105,6 +105,7 @@ void input_mt_report_slot_state(struct input_dev *dev,
|
||||
|
||||
void input_mt_report_finger_count(struct input_dev *dev, int count);
|
||||
void input_mt_report_pointer_emulation(struct input_dev *dev, bool use_count);
|
||||
void input_mt_drop_unused(struct input_dev *dev);
|
||||
|
||||
void input_mt_sync_frame(struct input_dev *dev);
|
||||
|
||||
|
||||
@@ -43,10 +43,22 @@ enum pixcir_int_mode {
|
||||
#define PIXCIR_INT_ENABLE (1UL << 3)
|
||||
#define PIXCIR_INT_POL_HIGH (1UL << 2)
|
||||
|
||||
/**
|
||||
* struct pixcir_irc_chip_data - chip related data
|
||||
* @max_fingers: Max number of fingers reported simultaneously by h/w
|
||||
* @has_hw_ids: Hardware supports finger tracking IDs
|
||||
*
|
||||
*/
|
||||
struct pixcir_i2c_chip_data {
|
||||
u8 max_fingers;
|
||||
bool has_hw_ids;
|
||||
};
|
||||
|
||||
struct pixcir_ts_platform_data {
|
||||
int x_max;
|
||||
int y_max;
|
||||
int gpio_attb; /* GPIO connected to ATTB line */
|
||||
struct pixcir_i2c_chip_data chip;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -237,6 +237,12 @@ extern int iomem_is_exclusive(u64 addr);
|
||||
extern int
|
||||
walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages,
|
||||
void *arg, int (*func)(unsigned long, unsigned long, void *));
|
||||
extern int
|
||||
walk_system_ram_res(u64 start, u64 end, void *arg,
|
||||
int (*func)(u64, u64, void *));
|
||||
extern int
|
||||
walk_iomem_res(char *name, unsigned long flags, u64 start, u64 end, void *arg,
|
||||
int (*func)(u64, u64, void *));
|
||||
|
||||
/* True if any part of r1 overlaps r2 */
|
||||
static inline bool resource_overlaps(struct resource *r1, struct resource *r2)
|
||||
|
||||
@@ -470,6 +470,7 @@ extern enum system_states {
|
||||
#define TAINT_FIRMWARE_WORKAROUND 11
|
||||
#define TAINT_OOT_MODULE 12
|
||||
#define TAINT_UNSIGNED_MODULE 13
|
||||
#define TAINT_SOFTLOCKUP 14
|
||||
|
||||
extern const char hex_asc[];
|
||||
#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
|
||||
@@ -493,11 +494,6 @@ static inline char *hex_byte_pack_upper(char *buf, u8 byte)
|
||||
return buf;
|
||||
}
|
||||
|
||||
static inline char * __deprecated pack_hex_byte(char *buf, u8 byte)
|
||||
{
|
||||
return hex_byte_pack(buf, byte);
|
||||
}
|
||||
|
||||
extern int hex_to_bin(char ch);
|
||||
extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
|
||||
|
||||
@@ -849,5 +845,7 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
|
||||
/* User perms >= group perms >= other perms */ \
|
||||
BUILD_BUG_ON_ZERO(((perms) >> 6) < (((perms) >> 3) & 7)) + \
|
||||
BUILD_BUG_ON_ZERO((((perms) >> 3) & 7) < ((perms) & 7)) + \
|
||||
/* Other writable? Generally considered a bad idea. */ \
|
||||
BUILD_BUG_ON_ZERO((perms) & 2) + \
|
||||
(perms))
|
||||
#endif
|
||||
|
||||
+102
-2
@@ -10,6 +10,7 @@
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/elfcore.h>
|
||||
#include <linux/elf.h>
|
||||
#include <linux/module.h>
|
||||
#include <asm/kexec.h>
|
||||
|
||||
/* Verify architecture specific macros are defined */
|
||||
@@ -69,7 +70,18 @@ typedef unsigned long kimage_entry_t;
|
||||
#define IND_SOURCE 0x8
|
||||
|
||||
struct kexec_segment {
|
||||
void __user *buf;
|
||||
/*
|
||||
* This pointer can point to user memory if kexec_load() system
|
||||
* call is used or will point to kernel memory if
|
||||
* kexec_file_load() system call is used.
|
||||
*
|
||||
* Use ->buf when expecting to deal with user memory and use ->kbuf
|
||||
* when expecting to deal with kernel memory.
|
||||
*/
|
||||
union {
|
||||
void __user *buf;
|
||||
void *kbuf;
|
||||
};
|
||||
size_t bufsz;
|
||||
unsigned long mem;
|
||||
size_t memsz;
|
||||
@@ -84,6 +96,27 @@ struct compat_kexec_segment {
|
||||
};
|
||||
#endif
|
||||
|
||||
struct kexec_sha_region {
|
||||
unsigned long start;
|
||||
unsigned long len;
|
||||
};
|
||||
|
||||
struct purgatory_info {
|
||||
/* Pointer to elf header of read only purgatory */
|
||||
Elf_Ehdr *ehdr;
|
||||
|
||||
/* Pointer to purgatory sechdrs which are modifiable */
|
||||
Elf_Shdr *sechdrs;
|
||||
/*
|
||||
* Temporary buffer location where purgatory is loaded and relocated
|
||||
* This memory can be freed post image load
|
||||
*/
|
||||
void *purgatory_buf;
|
||||
|
||||
/* Address where purgatory is finally loaded and is executed from */
|
||||
unsigned long purgatory_load_addr;
|
||||
};
|
||||
|
||||
struct kimage {
|
||||
kimage_entry_t head;
|
||||
kimage_entry_t *entry;
|
||||
@@ -100,7 +133,7 @@ struct kimage {
|
||||
|
||||
struct list_head control_pages;
|
||||
struct list_head dest_pages;
|
||||
struct list_head unuseable_pages;
|
||||
struct list_head unusable_pages;
|
||||
|
||||
/* Address of next control page to allocate for crash kernels. */
|
||||
unsigned long control_page;
|
||||
@@ -110,13 +143,63 @@ struct kimage {
|
||||
#define KEXEC_TYPE_DEFAULT 0
|
||||
#define KEXEC_TYPE_CRASH 1
|
||||
unsigned int preserve_context : 1;
|
||||
/* If set, we are using file mode kexec syscall */
|
||||
unsigned int file_mode:1;
|
||||
|
||||
#ifdef ARCH_HAS_KIMAGE_ARCH
|
||||
struct kimage_arch arch;
|
||||
#endif
|
||||
|
||||
/* Additional fields for file based kexec syscall */
|
||||
void *kernel_buf;
|
||||
unsigned long kernel_buf_len;
|
||||
|
||||
void *initrd_buf;
|
||||
unsigned long initrd_buf_len;
|
||||
|
||||
char *cmdline_buf;
|
||||
unsigned long cmdline_buf_len;
|
||||
|
||||
/* File operations provided by image loader */
|
||||
struct kexec_file_ops *fops;
|
||||
|
||||
/* Image loader handling the kernel can store a pointer here */
|
||||
void *image_loader_data;
|
||||
|
||||
/* Information for loading purgatory */
|
||||
struct purgatory_info purgatory_info;
|
||||
};
|
||||
|
||||
/*
|
||||
* Keeps track of buffer parameters as provided by caller for requesting
|
||||
* memory placement of buffer.
|
||||
*/
|
||||
struct kexec_buf {
|
||||
struct kimage *image;
|
||||
char *buffer;
|
||||
unsigned long bufsz;
|
||||
unsigned long memsz;
|
||||
unsigned long buf_align;
|
||||
unsigned long buf_min;
|
||||
unsigned long buf_max;
|
||||
bool top_down; /* allocate from top of memory hole */
|
||||
};
|
||||
|
||||
typedef int (kexec_probe_t)(const char *kernel_buf, unsigned long kernel_size);
|
||||
typedef void *(kexec_load_t)(struct kimage *image, char *kernel_buf,
|
||||
unsigned long kernel_len, char *initrd,
|
||||
unsigned long initrd_len, char *cmdline,
|
||||
unsigned long cmdline_len);
|
||||
typedef int (kexec_cleanup_t)(void *loader_data);
|
||||
typedef int (kexec_verify_sig_t)(const char *kernel_buf,
|
||||
unsigned long kernel_len);
|
||||
|
||||
struct kexec_file_ops {
|
||||
kexec_probe_t *probe;
|
||||
kexec_load_t *load;
|
||||
kexec_cleanup_t *cleanup;
|
||||
kexec_verify_sig_t *verify_sig;
|
||||
};
|
||||
|
||||
/* kexec interface functions */
|
||||
extern void machine_kexec(struct kimage *image);
|
||||
@@ -127,8 +210,21 @@ extern asmlinkage long sys_kexec_load(unsigned long entry,
|
||||
struct kexec_segment __user *segments,
|
||||
unsigned long flags);
|
||||
extern int kernel_kexec(void);
|
||||
extern int kexec_add_buffer(struct kimage *image, char *buffer,
|
||||
unsigned long bufsz, unsigned long memsz,
|
||||
unsigned long buf_align, unsigned long buf_min,
|
||||
unsigned long buf_max, bool top_down,
|
||||
unsigned long *load_addr);
|
||||
extern struct page *kimage_alloc_control_pages(struct kimage *image,
|
||||
unsigned int order);
|
||||
extern int kexec_load_purgatory(struct kimage *image, unsigned long min,
|
||||
unsigned long max, int top_down,
|
||||
unsigned long *load_addr);
|
||||
extern int kexec_purgatory_get_set_symbol(struct kimage *image,
|
||||
const char *name, void *buf,
|
||||
unsigned int size, bool get_value);
|
||||
extern void *kexec_purgatory_get_symbol_addr(struct kimage *image,
|
||||
const char *name);
|
||||
extern void crash_kexec(struct pt_regs *);
|
||||
int kexec_should_crash(struct task_struct *);
|
||||
void crash_save_cpu(struct pt_regs *regs, int cpu);
|
||||
@@ -177,6 +273,10 @@ extern int kexec_load_disabled;
|
||||
#define KEXEC_FLAGS (KEXEC_ON_CRASH | KEXEC_PRESERVE_CONTEXT)
|
||||
#endif
|
||||
|
||||
/* List of defined/legal kexec file flags */
|
||||
#define KEXEC_FILE_FLAGS (KEXEC_FILE_UNLOAD | KEXEC_FILE_ON_CRASH | \
|
||||
KEXEC_FILE_NO_INITRAMFS)
|
||||
|
||||
#define VMCOREINFO_BYTES (4096)
|
||||
#define VMCOREINFO_NOTE_NAME "VMCOREINFO"
|
||||
#define VMCOREINFO_NOTE_NAME_BYTES ALIGN(sizeof(VMCOREINFO_NOTE_NAME), 4)
|
||||
|
||||
@@ -44,7 +44,7 @@ struct klist_node {
|
||||
|
||||
extern void klist_add_tail(struct klist_node *n, struct klist *k);
|
||||
extern void klist_add_head(struct klist_node *n, struct klist *k);
|
||||
extern void klist_add_after(struct klist_node *n, struct klist_node *pos);
|
||||
extern void klist_add_behind(struct klist_node *n, struct klist_node *pos);
|
||||
extern void klist_add_before(struct klist_node *n, struct klist_node *pos);
|
||||
|
||||
extern void klist_del(struct klist_node *n);
|
||||
|
||||
+16
-31
@@ -325,24 +325,7 @@ struct kvm_kernel_irq_routing_entry {
|
||||
struct hlist_node link;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
|
||||
|
||||
struct kvm_irq_routing_table {
|
||||
int chip[KVM_NR_IRQCHIPS][KVM_IRQCHIP_NUM_PINS];
|
||||
struct kvm_kernel_irq_routing_entry *rt_entries;
|
||||
u32 nr_rt_entries;
|
||||
/*
|
||||
* Array indexed by gsi. Each entry contains list of irq chips
|
||||
* the gsi is connected to.
|
||||
*/
|
||||
struct hlist_head map[0];
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
struct kvm_irq_routing_table {};
|
||||
|
||||
#endif
|
||||
struct kvm_irq_routing_table;
|
||||
|
||||
#ifndef KVM_PRIVATE_MEM_SLOTS
|
||||
#define KVM_PRIVATE_MEM_SLOTS 0
|
||||
@@ -401,11 +384,12 @@ struct kvm {
|
||||
struct mutex irq_lock;
|
||||
#ifdef CONFIG_HAVE_KVM_IRQCHIP
|
||||
/*
|
||||
* Update side is protected by irq_lock and,
|
||||
* if configured, irqfds.lock.
|
||||
* Update side is protected by irq_lock.
|
||||
*/
|
||||
struct kvm_irq_routing_table __rcu *irq_routing;
|
||||
struct hlist_head mask_notifier_list;
|
||||
#endif
|
||||
#ifdef CONFIG_HAVE_KVM_IRQFD
|
||||
struct hlist_head irq_ack_notifier_list;
|
||||
#endif
|
||||
|
||||
@@ -455,7 +439,7 @@ void kvm_vcpu_uninit(struct kvm_vcpu *vcpu);
|
||||
int __must_check vcpu_load(struct kvm_vcpu *vcpu);
|
||||
void vcpu_put(struct kvm_vcpu *vcpu);
|
||||
|
||||
#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
|
||||
#ifdef CONFIG_HAVE_KVM_IRQFD
|
||||
int kvm_irqfd_init(void);
|
||||
void kvm_irqfd_exit(void);
|
||||
#else
|
||||
@@ -602,7 +586,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
|
||||
unsigned int ioctl, unsigned long arg);
|
||||
int kvm_arch_vcpu_fault(struct kvm_vcpu *vcpu, struct vm_fault *vmf);
|
||||
|
||||
int kvm_dev_ioctl_check_extension(long ext);
|
||||
int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext);
|
||||
|
||||
int kvm_get_dirty_log(struct kvm *kvm,
|
||||
struct kvm_dirty_log *log, int *is_dirty);
|
||||
@@ -752,6 +736,10 @@ void kvm_unregister_irq_mask_notifier(struct kvm *kvm, int irq,
|
||||
void kvm_fire_mask_notifiers(struct kvm *kvm, unsigned irqchip, unsigned pin,
|
||||
bool mask);
|
||||
|
||||
int kvm_irq_map_gsi(struct kvm *kvm,
|
||||
struct kvm_kernel_irq_routing_entry *entries, int gsi);
|
||||
int kvm_irq_map_chip_pin(struct kvm *kvm, unsigned irqchip, unsigned pin);
|
||||
|
||||
int kvm_set_irq(struct kvm *kvm, int irq_source_id, u32 irq, int level,
|
||||
bool line_status);
|
||||
int kvm_set_irq_inatomic(struct kvm *kvm, int irq_source_id, u32 irq, int level);
|
||||
@@ -942,28 +930,27 @@ int kvm_set_irq_routing(struct kvm *kvm,
|
||||
const struct kvm_irq_routing_entry *entries,
|
||||
unsigned nr,
|
||||
unsigned flags);
|
||||
int kvm_set_routing_entry(struct kvm_irq_routing_table *rt,
|
||||
struct kvm_kernel_irq_routing_entry *e,
|
||||
int kvm_set_routing_entry(struct kvm_kernel_irq_routing_entry *e,
|
||||
const struct kvm_irq_routing_entry *ue);
|
||||
void kvm_free_irq_routing(struct kvm *kvm);
|
||||
|
||||
int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi);
|
||||
|
||||
#else
|
||||
|
||||
static inline void kvm_free_irq_routing(struct kvm *kvm) {}
|
||||
|
||||
#endif
|
||||
|
||||
int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi);
|
||||
|
||||
#ifdef CONFIG_HAVE_KVM_EVENTFD
|
||||
|
||||
void kvm_eventfd_init(struct kvm *kvm);
|
||||
int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args);
|
||||
|
||||
#ifdef CONFIG_HAVE_KVM_IRQCHIP
|
||||
#ifdef CONFIG_HAVE_KVM_IRQFD
|
||||
int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args);
|
||||
void kvm_irqfd_release(struct kvm *kvm);
|
||||
void kvm_irq_routing_update(struct kvm *, struct kvm_irq_routing_table *);
|
||||
void kvm_irq_routing_update(struct kvm *);
|
||||
#else
|
||||
static inline int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args)
|
||||
{
|
||||
@@ -985,10 +972,8 @@ static inline int kvm_irqfd(struct kvm *kvm, struct kvm_irqfd *args)
|
||||
static inline void kvm_irqfd_release(struct kvm *kvm) {}
|
||||
|
||||
#ifdef CONFIG_HAVE_KVM_IRQCHIP
|
||||
static inline void kvm_irq_routing_update(struct kvm *kvm,
|
||||
struct kvm_irq_routing_table *irq_rt)
|
||||
static inline void kvm_irq_routing_update(struct kvm *kvm)
|
||||
{
|
||||
rcu_assign_pointer(kvm->irq_routing, irq_rt);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include <linux/list.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/rwsem.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
struct device;
|
||||
@@ -63,11 +62,13 @@ struct led_classdev {
|
||||
unsigned long *delay_off);
|
||||
|
||||
struct device *dev;
|
||||
const struct attribute_group **groups;
|
||||
|
||||
struct list_head node; /* LED Device list */
|
||||
const char *default_trigger; /* Trigger to use */
|
||||
|
||||
unsigned long blink_delay_on, blink_delay_off;
|
||||
struct timer_list blink_timer;
|
||||
struct delayed_work blink_work;
|
||||
int blink_brightness;
|
||||
|
||||
struct work_struct set_brightness_work;
|
||||
|
||||
@@ -654,15 +654,15 @@ static inline void hlist_add_before(struct hlist_node *n,
|
||||
*(n->pprev) = n;
|
||||
}
|
||||
|
||||
static inline void hlist_add_after(struct hlist_node *n,
|
||||
struct hlist_node *next)
|
||||
static inline void hlist_add_behind(struct hlist_node *n,
|
||||
struct hlist_node *prev)
|
||||
{
|
||||
next->next = n->next;
|
||||
n->next = next;
|
||||
next->pprev = &n->next;
|
||||
n->next = prev->next;
|
||||
prev->next = n;
|
||||
n->pprev = &prev->next;
|
||||
|
||||
if(next->next)
|
||||
next->next->pprev = &next->next;
|
||||
if (n->next)
|
||||
n->next->pprev = &n->next;
|
||||
}
|
||||
|
||||
/* after that we'll appear to be on some hlist and hlist_del will work */
|
||||
|
||||
@@ -249,7 +249,7 @@ phys_addr_t memblock_alloc(phys_addr_t size, phys_addr_t align);
|
||||
/*
|
||||
* Set the allocation direction to bottom-up or top-down.
|
||||
*/
|
||||
static inline void memblock_set_bottom_up(bool enable)
|
||||
static inline void __init memblock_set_bottom_up(bool enable)
|
||||
{
|
||||
memblock.bottom_up = enable;
|
||||
}
|
||||
@@ -264,7 +264,7 @@ static inline bool memblock_bottom_up(void)
|
||||
return memblock.bottom_up;
|
||||
}
|
||||
#else
|
||||
static inline void memblock_set_bottom_up(bool enable) {}
|
||||
static inline void __init memblock_set_bottom_up(bool enable) {}
|
||||
static inline bool memblock_bottom_up(void) { return false; }
|
||||
#endif
|
||||
|
||||
|
||||
+23
-75
@@ -54,39 +54,20 @@ struct mem_cgroup_reclaim_cookie {
|
||||
};
|
||||
|
||||
#ifdef CONFIG_MEMCG
|
||||
/*
|
||||
* All "charge" functions with gfp_mask should use GFP_KERNEL or
|
||||
* (gfp_mask & GFP_RECLAIM_MASK). In current implementatin, memcg doesn't
|
||||
* alloc memory but reclaims memory from all available zones. So, "where I want
|
||||
* memory from" bits of gfp_mask has no meaning. So any bits of that field is
|
||||
* available but adding a rule is better. charge functions' gfp_mask should
|
||||
* be set to GFP_KERNEL or gfp_mask & GFP_RECLAIM_MASK for avoiding ambiguous
|
||||
* codes.
|
||||
* (Of course, if memcg does memory allocation in future, GFP_KERNEL is sane.)
|
||||
*/
|
||||
int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm,
|
||||
gfp_t gfp_mask, struct mem_cgroup **memcgp);
|
||||
void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg,
|
||||
bool lrucare);
|
||||
void mem_cgroup_cancel_charge(struct page *page, struct mem_cgroup *memcg);
|
||||
void mem_cgroup_uncharge(struct page *page);
|
||||
void mem_cgroup_uncharge_list(struct list_head *page_list);
|
||||
|
||||
extern int mem_cgroup_charge_anon(struct page *page, struct mm_struct *mm,
|
||||
gfp_t gfp_mask);
|
||||
/* for swap handling */
|
||||
extern int mem_cgroup_try_charge_swapin(struct mm_struct *mm,
|
||||
struct page *page, gfp_t mask, struct mem_cgroup **memcgp);
|
||||
extern void mem_cgroup_commit_charge_swapin(struct page *page,
|
||||
struct mem_cgroup *memcg);
|
||||
extern void mem_cgroup_cancel_charge_swapin(struct mem_cgroup *memcg);
|
||||
|
||||
extern int mem_cgroup_charge_file(struct page *page, struct mm_struct *mm,
|
||||
gfp_t gfp_mask);
|
||||
void mem_cgroup_migrate(struct page *oldpage, struct page *newpage,
|
||||
bool lrucare);
|
||||
|
||||
struct lruvec *mem_cgroup_zone_lruvec(struct zone *, struct mem_cgroup *);
|
||||
struct lruvec *mem_cgroup_page_lruvec(struct page *, struct zone *);
|
||||
|
||||
/* For coalescing uncharge for reducing memcg' overhead*/
|
||||
extern void mem_cgroup_uncharge_start(void);
|
||||
extern void mem_cgroup_uncharge_end(void);
|
||||
|
||||
extern void mem_cgroup_uncharge_page(struct page *page);
|
||||
extern void mem_cgroup_uncharge_cache_page(struct page *page);
|
||||
|
||||
bool __mem_cgroup_same_or_subtree(const struct mem_cgroup *root_memcg,
|
||||
struct mem_cgroup *memcg);
|
||||
bool task_in_mem_cgroup(struct task_struct *task,
|
||||
@@ -113,12 +94,6 @@ bool mm_match_cgroup(const struct mm_struct *mm, const struct mem_cgroup *memcg)
|
||||
|
||||
extern struct cgroup_subsys_state *mem_cgroup_css(struct mem_cgroup *memcg);
|
||||
|
||||
extern void
|
||||
mem_cgroup_prepare_migration(struct page *page, struct page *newpage,
|
||||
struct mem_cgroup **memcgp);
|
||||
extern void mem_cgroup_end_migration(struct mem_cgroup *memcg,
|
||||
struct page *oldpage, struct page *newpage, bool migration_ok);
|
||||
|
||||
struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *,
|
||||
struct mem_cgroup *,
|
||||
struct mem_cgroup_reclaim_cookie *);
|
||||
@@ -133,8 +108,6 @@ unsigned long mem_cgroup_get_lru_size(struct lruvec *lruvec, enum lru_list);
|
||||
void mem_cgroup_update_lru_size(struct lruvec *, enum lru_list, int);
|
||||
extern void mem_cgroup_print_oom_info(struct mem_cgroup *memcg,
|
||||
struct task_struct *p);
|
||||
extern void mem_cgroup_replace_page_cache(struct page *oldpage,
|
||||
struct page *newpage);
|
||||
|
||||
static inline void mem_cgroup_oom_enable(void)
|
||||
{
|
||||
@@ -233,46 +206,36 @@ void mem_cgroup_print_bad_page(struct page *page);
|
||||
#else /* CONFIG_MEMCG */
|
||||
struct mem_cgroup;
|
||||
|
||||
static inline int mem_cgroup_charge_anon(struct page *page,
|
||||
struct mm_struct *mm, gfp_t gfp_mask)
|
||||
static inline int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm,
|
||||
gfp_t gfp_mask,
|
||||
struct mem_cgroup **memcgp)
|
||||
{
|
||||
*memcgp = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int mem_cgroup_charge_file(struct page *page,
|
||||
struct mm_struct *mm, gfp_t gfp_mask)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int mem_cgroup_try_charge_swapin(struct mm_struct *mm,
|
||||
struct page *page, gfp_t gfp_mask, struct mem_cgroup **memcgp)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void mem_cgroup_commit_charge_swapin(struct page *page,
|
||||
struct mem_cgroup *memcg)
|
||||
static inline void mem_cgroup_commit_charge(struct page *page,
|
||||
struct mem_cgroup *memcg,
|
||||
bool lrucare)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mem_cgroup_cancel_charge_swapin(struct mem_cgroup *memcg)
|
||||
static inline void mem_cgroup_cancel_charge(struct page *page,
|
||||
struct mem_cgroup *memcg)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mem_cgroup_uncharge_start(void)
|
||||
static inline void mem_cgroup_uncharge(struct page *page)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mem_cgroup_uncharge_end(void)
|
||||
static inline void mem_cgroup_uncharge_list(struct list_head *page_list)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mem_cgroup_uncharge_page(struct page *page)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mem_cgroup_uncharge_cache_page(struct page *page)
|
||||
static inline void mem_cgroup_migrate(struct page *oldpage,
|
||||
struct page *newpage,
|
||||
bool lrucare)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -311,17 +274,6 @@ static inline struct cgroup_subsys_state
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void
|
||||
mem_cgroup_prepare_migration(struct page *page, struct page *newpage,
|
||||
struct mem_cgroup **memcgp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void mem_cgroup_end_migration(struct mem_cgroup *memcg,
|
||||
struct page *oldpage, struct page *newpage, bool migration_ok)
|
||||
{
|
||||
}
|
||||
|
||||
static inline struct mem_cgroup *
|
||||
mem_cgroup_iter(struct mem_cgroup *root,
|
||||
struct mem_cgroup *prev,
|
||||
@@ -417,10 +369,6 @@ static inline
|
||||
void mem_cgroup_count_vm_event(struct mm_struct *mm, enum vm_event_item idx)
|
||||
{
|
||||
}
|
||||
static inline void mem_cgroup_replace_page_cache(struct page *oldpage,
|
||||
struct page *newpage)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_MEMCG */
|
||||
|
||||
#if !defined(CONFIG_MEMCG) || !defined(CONFIG_DEBUG_VM)
|
||||
|
||||
@@ -26,11 +26,12 @@ enum {
|
||||
MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE = NODE_INFO,
|
||||
};
|
||||
|
||||
/* Types for control the zone type of onlined memory */
|
||||
/* Types for control the zone type of onlined and offlined memory */
|
||||
enum {
|
||||
ONLINE_KEEP,
|
||||
ONLINE_KERNEL,
|
||||
ONLINE_MOVABLE,
|
||||
MMOP_OFFLINE = -1,
|
||||
MMOP_ONLINE_KEEP,
|
||||
MMOP_ONLINE_KERNEL,
|
||||
MMOP_ONLINE_MOVABLE,
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -258,6 +259,7 @@ static inline void remove_memory(int nid, u64 start, u64 size) {}
|
||||
extern int walk_memory_range(unsigned long start_pfn, unsigned long end_pfn,
|
||||
void *arg, int (*func)(struct memory_block *, void *));
|
||||
extern int add_memory(int nid, u64 start, u64 size);
|
||||
extern int zone_for_memory(int nid, u64 start, u64 size, int zone_default);
|
||||
extern int arch_add_memory(int nid, u64 start, u64 size);
|
||||
extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages);
|
||||
extern bool is_memblock_offlined(struct memory_block *mem);
|
||||
|
||||
@@ -505,6 +505,7 @@ static inline int is_ab9540_2p0_or_earlier(struct ab8500 *ab)
|
||||
void ab8500_override_turn_on_stat(u8 mask, u8 set);
|
||||
|
||||
#ifdef CONFIG_AB8500_DEBUG
|
||||
extern int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
|
||||
void ab8500_dump_all_banks(struct device *dev);
|
||||
void ab8500_debug_register_interrupt(int line);
|
||||
#else
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/mfd/arizona/pdata.h>
|
||||
|
||||
#define ARIZONA_MAX_CORE_SUPPLIES 3
|
||||
#define ARIZONA_MAX_CORE_SUPPLIES 2
|
||||
|
||||
enum arizona_type {
|
||||
WM5102 = 1,
|
||||
@@ -46,8 +46,8 @@ enum arizona_type {
|
||||
#define ARIZONA_IRQ_DSP_IRQ6 17
|
||||
#define ARIZONA_IRQ_DSP_IRQ7 18
|
||||
#define ARIZONA_IRQ_DSP_IRQ8 19
|
||||
#define ARIZONA_IRQ_SPK_SHUTDOWN_WARN 20
|
||||
#define ARIZONA_IRQ_SPK_SHUTDOWN 21
|
||||
#define ARIZONA_IRQ_SPK_OVERHEAT_WARN 20
|
||||
#define ARIZONA_IRQ_SPK_OVERHEAT 21
|
||||
#define ARIZONA_IRQ_MICDET 22
|
||||
#define ARIZONA_IRQ_HPDET 23
|
||||
#define ARIZONA_IRQ_WSEQ_DONE 24
|
||||
@@ -78,8 +78,31 @@ enum arizona_type {
|
||||
#define ARIZONA_IRQ_FLL1_CLOCK_OK 49
|
||||
#define ARIZONA_IRQ_MICD_CLAMP_RISE 50
|
||||
#define ARIZONA_IRQ_MICD_CLAMP_FALL 51
|
||||
#define ARIZONA_IRQ_HP3R_DONE 52
|
||||
#define ARIZONA_IRQ_HP3L_DONE 53
|
||||
#define ARIZONA_IRQ_HP2R_DONE 54
|
||||
#define ARIZONA_IRQ_HP2L_DONE 55
|
||||
#define ARIZONA_IRQ_HP1R_DONE 56
|
||||
#define ARIZONA_IRQ_HP1L_DONE 57
|
||||
#define ARIZONA_IRQ_ISRC3_CFG_ERR 58
|
||||
#define ARIZONA_IRQ_DSP_SHARED_WR_COLL 59
|
||||
#define ARIZONA_IRQ_SPK_SHUTDOWN 60
|
||||
#define ARIZONA_IRQ_SPK1R_SHORT 61
|
||||
#define ARIZONA_IRQ_SPK1L_SHORT 62
|
||||
#define ARIZONA_IRQ_HP3R_SC_NEG 63
|
||||
#define ARIZONA_IRQ_HP3R_SC_POS 64
|
||||
#define ARIZONA_IRQ_HP3L_SC_NEG 65
|
||||
#define ARIZONA_IRQ_HP3L_SC_POS 66
|
||||
#define ARIZONA_IRQ_HP2R_SC_NEG 67
|
||||
#define ARIZONA_IRQ_HP2R_SC_POS 68
|
||||
#define ARIZONA_IRQ_HP2L_SC_NEG 69
|
||||
#define ARIZONA_IRQ_HP2L_SC_POS 70
|
||||
#define ARIZONA_IRQ_HP1R_SC_NEG 71
|
||||
#define ARIZONA_IRQ_HP1R_SC_POS 72
|
||||
#define ARIZONA_IRQ_HP1L_SC_NEG 73
|
||||
#define ARIZONA_IRQ_HP1L_SC_POS 74
|
||||
|
||||
#define ARIZONA_NUM_IRQ 52
|
||||
#define ARIZONA_NUM_IRQ 75
|
||||
|
||||
struct snd_soc_dapm_context;
|
||||
|
||||
@@ -109,6 +132,8 @@ struct arizona {
|
||||
struct mutex clk_lock;
|
||||
int clk32k_ref;
|
||||
|
||||
bool ctrlif_error;
|
||||
|
||||
struct snd_soc_dapm_context *dapm;
|
||||
|
||||
int tdm_width[ARIZONA_MAX_AIF];
|
||||
|
||||
@@ -878,22 +878,26 @@
|
||||
#define ARIZONA_INTERRUPT_STATUS_3 0xD02
|
||||
#define ARIZONA_INTERRUPT_STATUS_4 0xD03
|
||||
#define ARIZONA_INTERRUPT_STATUS_5 0xD04
|
||||
#define ARIZONA_INTERRUPT_STATUS_6 0xD05
|
||||
#define ARIZONA_INTERRUPT_STATUS_1_MASK 0xD08
|
||||
#define ARIZONA_INTERRUPT_STATUS_2_MASK 0xD09
|
||||
#define ARIZONA_INTERRUPT_STATUS_3_MASK 0xD0A
|
||||
#define ARIZONA_INTERRUPT_STATUS_4_MASK 0xD0B
|
||||
#define ARIZONA_INTERRUPT_STATUS_5_MASK 0xD0C
|
||||
#define ARIZONA_INTERRUPT_STATUS_6_MASK 0xD0D
|
||||
#define ARIZONA_INTERRUPT_CONTROL 0xD0F
|
||||
#define ARIZONA_IRQ2_STATUS_1 0xD10
|
||||
#define ARIZONA_IRQ2_STATUS_2 0xD11
|
||||
#define ARIZONA_IRQ2_STATUS_3 0xD12
|
||||
#define ARIZONA_IRQ2_STATUS_4 0xD13
|
||||
#define ARIZONA_IRQ2_STATUS_5 0xD14
|
||||
#define ARIZONA_IRQ2_STATUS_6 0xD15
|
||||
#define ARIZONA_IRQ2_STATUS_1_MASK 0xD18
|
||||
#define ARIZONA_IRQ2_STATUS_2_MASK 0xD19
|
||||
#define ARIZONA_IRQ2_STATUS_3_MASK 0xD1A
|
||||
#define ARIZONA_IRQ2_STATUS_4_MASK 0xD1B
|
||||
#define ARIZONA_IRQ2_STATUS_5_MASK 0xD1C
|
||||
#define ARIZONA_IRQ2_STATUS_6_MASK 0xD1D
|
||||
#define ARIZONA_IRQ2_CONTROL 0xD1F
|
||||
#define ARIZONA_INTERRUPT_RAW_STATUS_2 0xD20
|
||||
#define ARIZONA_INTERRUPT_RAW_STATUS_3 0xD21
|
||||
@@ -902,6 +906,7 @@
|
||||
#define ARIZONA_INTERRUPT_RAW_STATUS_6 0xD24
|
||||
#define ARIZONA_INTERRUPT_RAW_STATUS_7 0xD25
|
||||
#define ARIZONA_INTERRUPT_RAW_STATUS_8 0xD26
|
||||
#define ARIZONA_INTERRUPT_RAW_STATUS_9 0xD28
|
||||
#define ARIZONA_IRQ_PIN_STATUS 0xD40
|
||||
#define ARIZONA_ADSP2_IRQ0 0xD41
|
||||
#define ARIZONA_AOD_WKUP_AND_TRIG 0xD50
|
||||
@@ -4691,14 +4696,14 @@
|
||||
/*
|
||||
* R3330 (0xD02) - Interrupt Status 3
|
||||
*/
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_EINT1 0x8000 /* SPK_SHUTDOWN_WARN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_EINT1_MASK 0x8000 /* SPK_SHUTDOWN_WARN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_EINT1_SHIFT 15 /* SPK_SHUTDOWN_WARN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_EINT1_WIDTH 1 /* SPK_SHUTDOWN_WARN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT1 0x4000 /* SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT1_MASK 0x4000 /* SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT1_SHIFT 14 /* SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT1_WIDTH 1 /* SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_EINT1 0x8000 /* SPK_OVERHEAT_WARN_EINT1 */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_EINT1_MASK 0x8000 /* SPK_OVERHEAD_WARN_EINT1 */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_EINT1_SHIFT 15 /* SPK_OVERHEAT_WARN_EINT1 */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_EINT1_WIDTH 1 /* SPK_OVERHEAT_WARN_EINT1 */
|
||||
#define ARIZONA_SPK_OVERHEAT_EINT1 0x4000 /* SPK_OVERHEAT_EINT1 */
|
||||
#define ARIZONA_SPK_OVERHEAT_EINT1_MASK 0x4000 /* SPK_OVERHEAT_EINT1 */
|
||||
#define ARIZONA_SPK_OVERHEAT_EINT1_SHIFT 14 /* SPK_OVERHEAT_EINT1 */
|
||||
#define ARIZONA_SPK_OVERHEAT_EINT1_WIDTH 1 /* SPK_OVERHEAT_EINT1 */
|
||||
#define ARIZONA_HPDET_EINT1 0x2000 /* HPDET_EINT1 */
|
||||
#define ARIZONA_HPDET_EINT1_MASK 0x2000 /* HPDET_EINT1 */
|
||||
#define ARIZONA_HPDET_EINT1_SHIFT 13 /* HPDET_EINT1 */
|
||||
@@ -4795,6 +4800,77 @@
|
||||
#define ARIZONA_ISRC2_CFG_ERR_EINT1_MASK 0x0040 /* ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_ISRC2_CFG_ERR_EINT1_SHIFT 6 /* ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_ISRC2_CFG_ERR_EINT1_WIDTH 1 /* ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_HP3R_DONE_EINT1 0x0020 /* HP3R_DONE_EINT1 */
|
||||
#define ARIZONA_HP3R_DONE_EINT1_MASK 0x0020 /* HP3R_DONE_EINT1 */
|
||||
#define ARIZONA_HP3R_DONE_EINT1_SHIFT 5 /* HP3R_DONE_EINT1 */
|
||||
#define ARIZONA_HP3R_DONE_EINT1_WIDTH 1 /* HP3R_DONE_EINT1 */
|
||||
#define ARIZONA_HP3L_DONE_EINT1 0x0010 /* HP3L_DONE_EINT1 */
|
||||
#define ARIZONA_HP3L_DONE_EINT1_MASK 0x0010 /* HP3L_DONE_EINT1 */
|
||||
#define ARIZONA_HP3L_DONE_EINT1_SHIFT 4 /* HP3L_DONE_EINT1 */
|
||||
#define ARIZONA_HP3L_DONE_EINT1_WIDTH 1 /* HP3L_DONE_EINT1 */
|
||||
#define ARIZONA_HP2R_DONE_EINT1 0x0008 /* HP2R_DONE_EINT1 */
|
||||
#define ARIZONA_HP2R_DONE_EINT1_MASK 0x0008 /* HP2R_DONE_EINT1 */
|
||||
#define ARIZONA_HP2R_DONE_EINT1_SHIFT 3 /* HP2R_DONE_EINT1 */
|
||||
#define ARIZONA_HP2R_DONE_EINT1_WIDTH 1 /* HP2R_DONE_EINT1 */
|
||||
#define ARIZONA_HP2L_DONE_EINT1 0x0004 /* HP2L_DONE_EINT1 */
|
||||
#define ARIZONA_HP2L_DONE_EINT1_MASK 0x0004 /* HP2L_DONE_EINT1 */
|
||||
#define ARIZONA_HP2L_DONE_EINT1_SHIFT 2 /* HP2L_DONE_EINT1 */
|
||||
#define ARIZONA_HP2L_DONE_EINT1_WIDTH 1 /* HP2L_DONE_EINT1 */
|
||||
#define ARIZONA_HP1R_DONE_EINT1 0x0002 /* HP1R_DONE_EINT1 */
|
||||
#define ARIZONA_HP1R_DONE_EINT1_MASK 0x0002 /* HP1R_DONE_EINT1 */
|
||||
#define ARIZONA_HP1R_DONE_EINT1_SHIFT 1 /* HP1R_DONE_EINT1 */
|
||||
#define ARIZONA_HP1R_DONE_EINT1_WIDTH 1 /* HP1R_DONE_EINT1 */
|
||||
#define ARIZONA_HP1L_DONE_EINT1 0x0001 /* HP1L_DONE_EINT1 */
|
||||
#define ARIZONA_HP1L_DONE_EINT1_MASK 0x0001 /* HP1L_DONE_EINT1 */
|
||||
#define ARIZONA_HP1L_DONE_EINT1_SHIFT 0 /* HP1L_DONE_EINT1 */
|
||||
#define ARIZONA_HP1L_DONE_EINT1_WIDTH 1 /* HP1L_DONE_EINT1 */
|
||||
|
||||
/*
|
||||
* R3331 (0xD03) - Interrupt Status 4 (Alternate layout)
|
||||
*
|
||||
* Alternate layout used on later devices, note only fields that have moved
|
||||
* are specified
|
||||
*/
|
||||
#define ARIZONA_V2_AIF3_ERR_EINT1 0x8000 /* AIF3_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF3_ERR_EINT1_MASK 0x8000 /* AIF3_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF3_ERR_EINT1_SHIFT 15 /* AIF3_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF3_ERR_EINT1_WIDTH 1 /* AIF3_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF2_ERR_EINT1 0x4000 /* AIF2_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF2_ERR_EINT1_MASK 0x4000 /* AIF2_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF2_ERR_EINT1_SHIFT 14 /* AIF2_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF2_ERR_EINT1_WIDTH 1 /* AIF2_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF1_ERR_EINT1 0x2000 /* AIF1_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF1_ERR_EINT1_MASK 0x2000 /* AIF1_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF1_ERR_EINT1_SHIFT 13 /* AIF1_ERR_EINT1 */
|
||||
#define ARIZONA_V2_AIF1_ERR_EINT1_WIDTH 1 /* AIF1_ERR_EINT1 */
|
||||
#define ARIZONA_V2_CTRLIF_ERR_EINT1 0x1000 /* CTRLIF_ERR_EINT1 */
|
||||
#define ARIZONA_V2_CTRLIF_ERR_EINT1_MASK 0x1000 /* CTRLIF_ERR_EINT1 */
|
||||
#define ARIZONA_V2_CTRLIF_ERR_EINT1_SHIFT 12 /* CTRLIF_ERR_EINT1 */
|
||||
#define ARIZONA_V2_CTRLIF_ERR_EINT1_WIDTH 1 /* CTRLIF_ERR_EINT1 */
|
||||
#define ARIZONA_V2_MIXER_DROPPED_SAMPLE_EINT1 0x0800 /* MIXER_DROPPED_SAMPLE_EINT1 */
|
||||
#define ARIZONA_V2_MIXER_DROPPED_SAMPLE_EINT1_MASK 0x0800 /* MIXER_DROPPED_SAMPLE_EINT1 */
|
||||
#define ARIZONA_V2_MIXER_DROPPED_SAMPLE_EINT1_SHIFT 11 /* MIXER_DROPPED_SAMPLE_EINT1 */
|
||||
#define ARIZONA_V2_MIXER_DROPPED_SAMPLE_EINT1_WIDTH 1 /* MIXER_DROPPED_SAMPLE_EINT1 */
|
||||
#define ARIZONA_V2_ASYNC_CLK_ENA_LOW_EINT1 0x0400 /* ASYNC_CLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_ASYNC_CLK_ENA_LOW_EINT1_MASK 0x0400 /* ASYNC_CLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_ASYNC_CLK_ENA_LOW_EINT1_SHIFT 10 /* ASYNC_CLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_ASYNC_CLK_ENA_LOW_EINT1_WIDTH 1 /* ASYNC_CLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_SYSCLK_ENA_LOW_EINT1 0x0200 /* SYSCLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_SYSCLK_ENA_LOW_EINT1_MASK 0x0200 /* SYSCLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_SYSCLK_ENA_LOW_EINT1_SHIFT 9 /* SYSCLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_SYSCLK_ENA_LOW_EINT1_WIDTH 1 /* SYSCLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_ISRC1_CFG_ERR_EINT1 0x0100 /* ISRC1_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC1_CFG_ERR_EINT1_MASK 0x0100 /* ISRC1_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC1_CFG_ERR_EINT1_SHIFT 8 /* ISRC1_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC1_CFG_ERR_EINT1_WIDTH 1 /* ISRC1_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC2_CFG_ERR_EINT1 0x0080 /* ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC2_CFG_ERR_EINT1_MASK 0x0080 /* ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC2_CFG_ERR_EINT1_SHIFT 7 /* ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC2_CFG_ERR_EINT1_WIDTH 1 /* ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC3_CFG_ERR_EINT1 0x0040 /* ISRC3_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC3_CFG_ERR_EINT1_MASK 0x0040 /* ISRC3_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC3_CFG_ERR_EINT1_SHIFT 6 /* ISRC3_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ISRC3_CFG_ERR_EINT1_WIDTH 1 /* ISRC3_CFG_ERR_EINT1 */
|
||||
|
||||
/*
|
||||
* R3332 (0xD04) - Interrupt Status 5
|
||||
@@ -4820,6 +4896,85 @@
|
||||
#define ARIZONA_FLL1_CLOCK_OK_EINT1_SHIFT 0 /* FLL1_CLOCK_OK_EINT1 */
|
||||
#define ARIZONA_FLL1_CLOCK_OK_EINT1_WIDTH 1 /* FLL1_CLOCK_OK_EINT1 */
|
||||
|
||||
/*
|
||||
* R3332 (0xD05) - Interrupt Status 5 (Alternate layout)
|
||||
*
|
||||
* Alternate layout used on later devices, note only fields that have moved
|
||||
* are specified
|
||||
*/
|
||||
#define ARIZONA_V2_ASRC_CFG_ERR_EINT1 0x0008 /* ASRC_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ASRC_CFG_ERR_EINT1_MASK 0x0008 /* ASRC_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ASRC_CFG_ERR_EINT1_SHIFT 3 /* ASRC_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_ASRC_CFG_ERR_EINT1_WIDTH 1 /* ASRC_CFG_ERR_EINT1 */
|
||||
|
||||
/*
|
||||
* R3333 (0xD05) - Interrupt Status 6
|
||||
*/
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_EINT1 0x8000 /* DSP_SHARED_WR_COLL_EINT1 */
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_EINT1_MASK 0x8000 /* DSP_SHARED_WR_COLL_EINT1 */
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_EINT1_SHIFT 15 /* DSP_SHARED_WR_COLL_EINT1 */
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_EINT1_WIDTH 1 /* DSP_SHARED_WR_COLL_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT1 0x4000 /* SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT1_MASK 0x4000 /* SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT1_SHIFT 14 /* SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT1_WIDTH 1 /* SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_SPK1R_SHORT_EINT1 0x2000 /* SPK1R_SHORT_EINT1 */
|
||||
#define ARIZONA_SPK1R_SHORT_EINT1_MASK 0x2000 /* SPK1R_SHORT_EINT1 */
|
||||
#define ARIZONA_SPK1R_SHORT_EINT1_SHIFT 13 /* SPK1R_SHORT_EINT1 */
|
||||
#define ARIZONA_SPK1R_SHORT_EINT1_WIDTH 1 /* SPK1R_SHORT_EINT1 */
|
||||
#define ARIZONA_SPK1L_SHORT_EINT1 0x1000 /* SPK1L_SHORT_EINT1 */
|
||||
#define ARIZONA_SPK1L_SHORT_EINT1_MASK 0x1000 /* SPK1L_SHORT_EINT1 */
|
||||
#define ARIZONA_SPK1L_SHORT_EINT1_SHIFT 12 /* SPK1L_SHORT_EINT1 */
|
||||
#define ARIZONA_SPK1L_SHORT_EINT1_WIDTH 1 /* SPK1L_SHORT_EINT1 */
|
||||
#define ARIZONA_HP3R_SC_NEG_EINT1 0x0800 /* HP3R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP3R_SC_NEG_EINT1_MASK 0x0800 /* HP3R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP3R_SC_NEG_EINT1_SHIFT 11 /* HP3R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP3R_SC_NEG_EINT1_WIDTH 1 /* HP3R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP3R_SC_POS_EINT1 0x0400 /* HP3R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP3R_SC_POS_EINT1_MASK 0x0400 /* HP3R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP3R_SC_POS_EINT1_SHIFT 10 /* HP3R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP3R_SC_POS_EINT1_WIDTH 1 /* HP3R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP3L_SC_NEG_EINT1 0x0200 /* HP3L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP3L_SC_NEG_EINT1_MASK 0x0200 /* HP3L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP3L_SC_NEG_EINT1_SHIFT 9 /* HP3L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP3L_SC_NEG_EINT1_WIDTH 1 /* HP3L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP3L_SC_POS_EINT1 0x0100 /* HP3L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP3L_SC_POS_EINT1_MASK 0x0100 /* HP3L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP3L_SC_POS_EINT1_SHIFT 8 /* HP3L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP3L_SC_POS_EINT1_WIDTH 1 /* HP3L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP2R_SC_NEG_EINT1 0x0080 /* HP2R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP2R_SC_NEG_EINT1_MASK 0x0080 /* HP2R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP2R_SC_NEG_EINT1_SHIFT 7 /* HP2R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP2R_SC_NEG_EINT1_WIDTH 1 /* HP2R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP2R_SC_POS_EINT1 0x0040 /* HP2R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP2R_SC_POS_EINT1_MASK 0x0040 /* HP2R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP2R_SC_POS_EINT1_SHIFT 6 /* HP2R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP2R_SC_POS_EINT1_WIDTH 1 /* HP2R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP2L_SC_NEG_EINT1 0x0020 /* HP2L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP2L_SC_NEG_EINT1_MASK 0x0020 /* HP2L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP2L_SC_NEG_EINT1_SHIFT 5 /* HP2L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP2L_SC_NEG_EINT1_WIDTH 1 /* HP2L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP2L_SC_POS_EINT1 0x0010 /* HP2L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP2L_SC_POS_EINT1_MASK 0x0010 /* HP2L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP2L_SC_POS_EINT1_SHIFT 4 /* HP2L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP2L_SC_POS_EINT1_WIDTH 1 /* HP2L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP1R_SC_NEG_EINT1 0x0008 /* HP1R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP1R_SC_NEG_EINT1_MASK 0x0008 /* HP1R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP1R_SC_NEG_EINT1_SHIFT 3 /* HP1R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP1R_SC_NEG_EINT1_WIDTH 1 /* HP1R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP1R_SC_POS_EINT1 0x0004 /* HP1R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP1R_SC_POS_EINT1_MASK 0x0004 /* HP1R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP1R_SC_POS_EINT1_SHIFT 2 /* HP1R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP1R_SC_POS_EINT1_WIDTH 1 /* HP1R_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP1L_SC_NEG_EINT1 0x0002 /* HP1L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP1L_SC_NEG_EINT1_MASK 0x0002 /* HP1L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP1L_SC_NEG_EINT1_SHIFT 1 /* HP1L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP1L_SC_NEG_EINT1_WIDTH 1 /* HP1L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_HP1L_SC_POS_EINT1 0x0001 /* HP1L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP1L_SC_POS_EINT1_MASK 0x0001 /* HP1L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP1L_SC_POS_EINT1_SHIFT 0 /* HP1L_SC_POS_EINT1 */
|
||||
#define ARIZONA_HP1L_SC_POS_EINT1_WIDTH 1 /* HP1L_SC_POS_EINT1 */
|
||||
|
||||
/*
|
||||
* R3336 (0xD08) - Interrupt Status 1 Mask
|
||||
*/
|
||||
@@ -4859,14 +5014,14 @@
|
||||
/*
|
||||
* R3338 (0xD0A) - Interrupt Status 3 Mask
|
||||
*/
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1_MASK 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1_SHIFT 15 /* IM_SPK_SHUTDOWN_WARN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT1_WIDTH 1 /* IM_SPK_SHUTDOWN_WARN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT1 0x4000 /* IM_SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT1_MASK 0x4000 /* IM_SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT1_SHIFT 14 /* IM_SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT1_WIDTH 1 /* IM_SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_WARN_EINT1 0x8000 /* IM_SPK_OVERHEAT_WARN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_WARN_EINT1_MASK 0x8000 /* IM_SPK_OVERHEAT_WARN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_WARN_EINT1_SHIFT 15 /* IM_SPK_OVERHEAT_WARN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_WARN_EINT1_WIDTH 1 /* IM_SPK_OVERHEAT_WARN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_EINT1 0x4000 /* IM_SPK_OVERHEAT_EINT1 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_EINT1_MASK 0x4000 /* IM_SPK_OVERHEAT_EINT1 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_EINT1_SHIFT 14 /* IM_SPK_OVERHEAT_EINT1 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_EINT1_WIDTH 1 /* IM_SPK_OVERHEAT_EINT1 */
|
||||
#define ARIZONA_IM_HPDET_EINT1 0x2000 /* IM_HPDET_EINT1 */
|
||||
#define ARIZONA_IM_HPDET_EINT1_MASK 0x2000 /* IM_HPDET_EINT1 */
|
||||
#define ARIZONA_IM_HPDET_EINT1_SHIFT 13 /* IM_HPDET_EINT1 */
|
||||
@@ -4963,6 +5118,77 @@
|
||||
#define ARIZONA_IM_ISRC2_CFG_ERR_EINT1_MASK 0x0040 /* IM_ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_IM_ISRC2_CFG_ERR_EINT1_SHIFT 6 /* IM_ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_IM_ISRC2_CFG_ERR_EINT1_WIDTH 1 /* IM_ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_DONE_EINT1 0x0020 /* IM_HP3R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_DONE_EINT1_MASK 0x0020 /* IM_HP3R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_DONE_EINT1_SHIFT 5 /* IM_HP3R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_DONE_EINT1_WIDTH 1 /* IM_HP3R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_DONE_EINT1 0x0010 /* IM_HP3L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_DONE_EINT1_MASK 0x0010 /* IM_HP3L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_DONE_EINT1_SHIFT 4 /* IM_HP3L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_DONE_EINT1_WIDTH 1 /* IM_HP3L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_DONE_EINT1 0x0008 /* IM_HP2R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_DONE_EINT1_MASK 0x0008 /* IM_HP2R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_DONE_EINT1_SHIFT 3 /* IM_HP2R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_DONE_EINT1_WIDTH 1 /* IM_HP2R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_DONE_EINT1 0x0004 /* IM_HP2L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_DONE_EINT1_MASK 0x0004 /* IM_HP2L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_DONE_EINT1_SHIFT 2 /* IM_HP2L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_DONE_EINT1_WIDTH 1 /* IM_HP2L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_DONE_EINT1 0x0002 /* IM_HP1R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_DONE_EINT1_MASK 0x0002 /* IM_HP1R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_DONE_EINT1_SHIFT 1 /* IM_HP1R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_DONE_EINT1_WIDTH 1 /* IM_HP1R_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_DONE_EINT1 0x0001 /* IM_HP1L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_DONE_EINT1_MASK 0x0001 /* IM_HP1L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_DONE_EINT1_SHIFT 0 /* IM_HP1L_DONE_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_DONE_EINT1_WIDTH 1 /* IM_HP1L_DONE_EINT1 */
|
||||
|
||||
/*
|
||||
* R3339 (0xD0B) - Interrupt Status 4 Mask (Alternate layout)
|
||||
*
|
||||
* Alternate layout used on later devices, note only fields that have moved
|
||||
* are specified
|
||||
*/
|
||||
#define ARIZONA_V2_IM_AIF3_ERR_EINT1 0x8000 /* IM_AIF3_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF3_ERR_EINT1_MASK 0x8000 /* IM_AIF3_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF3_ERR_EINT1_SHIFT 15 /* IM_AIF3_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF3_ERR_EINT1_WIDTH 1 /* IM_AIF3_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF2_ERR_EINT1 0x4000 /* IM_AIF2_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF2_ERR_EINT1_MASK 0x4000 /* IM_AIF2_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF2_ERR_EINT1_SHIFT 14 /* IM_AIF2_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF2_ERR_EINT1_WIDTH 1 /* IM_AIF2_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF1_ERR_EINT1 0x2000 /* IM_AIF1_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF1_ERR_EINT1_MASK 0x2000 /* IM_AIF1_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF1_ERR_EINT1_SHIFT 13 /* IM_AIF1_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_AIF1_ERR_EINT1_WIDTH 1 /* IM_AIF1_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_CTRLIF_ERR_EINT1 0x1000 /* IM_CTRLIF_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_CTRLIF_ERR_EINT1_MASK 0x1000 /* IM_CTRLIF_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_CTRLIF_ERR_EINT1_SHIFT 12 /* IM_CTRLIF_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_CTRLIF_ERR_EINT1_WIDTH 1 /* IM_CTRLIF_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_MIXER_DROPPED_SAMPLE_EINT1 0x0800 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */
|
||||
#define ARIZONA_V2_IM_MIXER_DROPPED_SAMPLE_EINT1_MASK 0x0800 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */
|
||||
#define ARIZONA_V2_IM_MIXER_DROPPED_SAMPLE_EINT1_SHIFT 11 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */
|
||||
#define ARIZONA_V2_IM_MIXER_DROPPED_SAMPLE_EINT1_WIDTH 1 /* IM_MIXER_DROPPED_SAMPLE_EINT1 */
|
||||
#define ARIZONA_V2_IM_ASYNC_CLK_ENA_LOW_EINT1 0x0400 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_IM_ASYNC_CLK_ENA_LOW_EINT1_MASK 0x0400 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_IM_ASYNC_CLK_ENA_LOW_EINT1_SHIFT 10 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_IM_ASYNC_CLK_ENA_LOW_EINT1_WIDTH 1 /* IM_ASYNC_CLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_IM_SYSCLK_ENA_LOW_EINT1 0x0200 /* IM_SYSCLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_IM_SYSCLK_ENA_LOW_EINT1_MASK 0x0200 /* IM_SYSCLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_IM_SYSCLK_ENA_LOW_EINT1_SHIFT 9 /* IM_SYSCLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_IM_SYSCLK_ENA_LOW_EINT1_WIDTH 1 /* IM_SYSCLK_ENA_LOW_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC1_CFG_ERR_EINT1 0x0100 /* IM_ISRC1_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC1_CFG_ERR_EINT1_MASK 0x0100 /* IM_ISRC1_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC1_CFG_ERR_EINT1_SHIFT 8 /* IM_ISRC1_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC1_CFG_ERR_EINT1_WIDTH 1 /* IM_ISRC1_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC2_CFG_ERR_EINT1 0x0080 /* IM_ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC2_CFG_ERR_EINT1_MASK 0x0080 /* IM_ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC2_CFG_ERR_EINT1_SHIFT 7 /* IM_ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC2_CFG_ERR_EINT1_WIDTH 1 /* IM_ISRC2_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC3_CFG_ERR_EINT1 0x0040 /* IM_ISRC3_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC3_CFG_ERR_EINT1_MASK 0x0040 /* IM_ISRC3_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC3_CFG_ERR_EINT1_SHIFT 6 /* IM_ISRC3_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ISRC3_CFG_ERR_EINT1_WIDTH 1 /* IM_ISRC3_CFG_ERR_EINT1 */
|
||||
|
||||
/*
|
||||
* R3340 (0xD0C) - Interrupt Status 5 Mask
|
||||
@@ -4988,6 +5214,85 @@
|
||||
#define ARIZONA_IM_FLL1_CLOCK_OK_EINT1_SHIFT 0 /* IM_FLL1_CLOCK_OK_EINT1 */
|
||||
#define ARIZONA_IM_FLL1_CLOCK_OK_EINT1_WIDTH 1 /* IM_FLL1_CLOCK_OK_EINT1 */
|
||||
|
||||
/*
|
||||
* R3340 (0xD0C) - Interrupt Status 5 Mask (Alternate layout)
|
||||
*
|
||||
* Alternate layout used on later devices, note only fields that have moved
|
||||
* are specified
|
||||
*/
|
||||
#define ARIZONA_V2_IM_ASRC_CFG_ERR_EINT1 0x0008 /* IM_ASRC_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ASRC_CFG_ERR_EINT1_MASK 0x0008 /* IM_ASRC_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ASRC_CFG_ERR_EINT1_SHIFT 3 /* IM_ASRC_CFG_ERR_EINT1 */
|
||||
#define ARIZONA_V2_IM_ASRC_CFG_ERR_EINT1_WIDTH 1 /* IM_ASRC_CFG_ERR_EINT1 */
|
||||
|
||||
/*
|
||||
* R3341 (0xD0D) - Interrupt Status 6 Mask
|
||||
*/
|
||||
#define ARIZONA_IM_DSP_SHARED_WR_COLL_EINT1 0x8000 /* IM_DSP_SHARED_WR_COLL_EINT1 */
|
||||
#define ARIZONA_IM_DSP_SHARED_WR_COLL_EINT1_MASK 0x8000 /* IM_DSP_SHARED_WR_COLL_EINT1 */
|
||||
#define ARIZONA_IM_DSP_SHARED_WR_COLL_EINT1_SHIFT 15 /* IM_DSP_SHARED_WR_COLL_EINT1 */
|
||||
#define ARIZONA_IM_DSP_SHARED_WR_COLL_EINT1_WIDTH 1 /* IM_DSP_SHARED_WR_COLL_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT1 0x4000 /* IM_SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT1_MASK 0x4000 /* IM_SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT1_SHIFT 14 /* IM_SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT1_WIDTH 1 /* IM_SPK_SHUTDOWN_EINT1 */
|
||||
#define ARIZONA_IM_SPK1R_SHORT_EINT1 0x2000 /* IM_SPK1R_SHORT_EINT1 */
|
||||
#define ARIZONA_IM_SPK1R_SHORT_EINT1_MASK 0x2000 /* IM_SPK1R_SHORT_EINT1 */
|
||||
#define ARIZONA_IM_SPK1R_SHORT_EINT1_SHIFT 13 /* IM_SPK1R_SHORT_EINT1 */
|
||||
#define ARIZONA_IM_SPK1R_SHORT_EINT1_WIDTH 1 /* IM_SPK1R_SHORT_EINT1 */
|
||||
#define ARIZONA_IM_SPK1L_SHORT_EINT1 0x1000 /* IM_SPK1L_SHORT_EINT1 */
|
||||
#define ARIZONA_IM_SPK1L_SHORT_EINT1_MASK 0x1000 /* IM_SPK1L_SHORT_EINT1 */
|
||||
#define ARIZONA_IM_SPK1L_SHORT_EINT1_SHIFT 12 /* IM_SPK1L_SHORT_EINT1 */
|
||||
#define ARIZONA_IM_SPK1L_SHORT_EINT1_WIDTH 1 /* IM_SPK1L_SHORT_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_SC_NEG_EINT1 0x0800 /* IM_HP3R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_SC_NEG_EINT1_MASK 0x0800 /* IM_HP3R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_SC_NEG_EINT1_SHIFT 11 /* IM_HP3R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_SC_NEG_EINT1_WIDTH 1 /* IM_HP3R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_SC_POS_EINT1 0x0400 /* IM_HP3R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_SC_POS_EINT1_MASK 0x0400 /* IM_HP3R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_SC_POS_EINT1_SHIFT 10 /* IM_HP3R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP3R_SC_POS_EINT1_WIDTH 1 /* IM_HP3R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_SC_NEG_EINT1 0x0200 /* IM_HP3L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_SC_NEG_EINT1_MASK 0x0200 /* IM_HP3L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_SC_NEG_EINT1_SHIFT 9 /* IM_HP3L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_SC_NEG_EINT1_WIDTH 1 /* IM_HP3L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_SC_POS_EINT1 0x0100 /* IM_HP3L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_SC_POS_EINT1_MASK 0x0100 /* IM_HP3L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_SC_POS_EINT1_SHIFT 8 /* IM_HP3L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP3L_SC_POS_EINT1_WIDTH 1 /* IM_HP3L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_SC_NEG_EINT1 0x0080 /* IM_HP2R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_SC_NEG_EINT1_MASK 0x0080 /* IM_HP2R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_SC_NEG_EINT1_SHIFT 7 /* IM_HP2R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_SC_NEG_EINT1_WIDTH 1 /* IM_HP2R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_SC_POS_EINT1 0x0040 /* IM_HP2R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_SC_POS_EINT1_MASK 0x0040 /* IM_HP2R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_SC_POS_EINT1_SHIFT 6 /* IM_HP2R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP2R_SC_POS_EINT1_WIDTH 1 /* IM_HP2R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_SC_NEG_EINT1 0x0020 /* IM_HP2L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_SC_NEG_EINT1_MASK 0x0020 /* IM_HP2L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_SC_NEG_EINT1_SHIFT 5 /* IM_HP2L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_SC_NEG_EINT1_WIDTH 1 /* IM_HP2L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_SC_POS_EINT1 0x0010 /* IM_HP2L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_SC_POS_EINT1_MASK 0x0010 /* IM_HP2L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_SC_POS_EINT1_SHIFT 4 /* IM_HP2L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP2L_SC_POS_EINT1_WIDTH 1 /* IM_HP2L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_SC_NEG_EINT1 0x0008 /* IM_HP1R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_SC_NEG_EINT1_MASK 0x0008 /* IM_HP1R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_SC_NEG_EINT1_SHIFT 3 /* IM_HP1R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_SC_NEG_EINT1_WIDTH 1 /* IM_HP1R_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_SC_POS_EINT1 0x0004 /* IM_HP1R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_SC_POS_EINT1_MASK 0x0004 /* IM_HP1R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_SC_POS_EINT1_SHIFT 2 /* IM_HP1R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP1R_SC_POS_EINT1_WIDTH 1 /* IM_HP1R_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_SC_NEG_EINT1 0x0002 /* IM_HP1L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_SC_NEG_EINT1_MASK 0x0002 /* IM_HP1L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_SC_NEG_EINT1_SHIFT 1 /* IM_HP1L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_SC_NEG_EINT1_WIDTH 1 /* IM_HP1L_SC_NEG_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_SC_POS_EINT1 0x0001 /* IM_HP1L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_SC_POS_EINT1_MASK 0x0001 /* IM_HP1L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_SC_POS_EINT1_SHIFT 0 /* IM_HP1L_SC_POS_EINT1 */
|
||||
#define ARIZONA_IM_HP1L_SC_POS_EINT1_WIDTH 1 /* IM_HP1L_SC_POS_EINT1 */
|
||||
|
||||
/*
|
||||
* R3343 (0xD0F) - Interrupt Control
|
||||
*/
|
||||
@@ -5035,14 +5340,14 @@
|
||||
/*
|
||||
* R3346 (0xD12) - IRQ2 Status 3
|
||||
*/
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_EINT2 0x8000 /* SPK_SHUTDOWN_WARN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_EINT2_MASK 0x8000 /* SPK_SHUTDOWN_WARN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_EINT2_SHIFT 15 /* SPK_SHUTDOWN_WARN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_EINT2_WIDTH 1 /* SPK_SHUTDOWN_WARN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT2 0x4000 /* SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT2_MASK 0x4000 /* SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT2_SHIFT 14 /* SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT2_WIDTH 1 /* SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_EINT2 0x8000 /* SPK_OVERHEAT_WARN_EINT2 */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_EINT2_MASK 0x8000 /* SPK_OVERHEAT_WARN_EINT2 */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_EINT2_SHIFT 15 /* SPK_OVERHEAT_WARN_EINT2 */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_EINT2_WIDTH 1 /* SPK_OVERHEAT_WARN_EINT2 */
|
||||
#define ARIZONA_SPK_OVERHEAT_EINT2 0x4000 /* SPK_OVERHEAT_EINT2 */
|
||||
#define ARIZONA_SPK_OVERHEAT_EINT2_MASK 0x4000 /* SPK_OVERHEAT_EINT2 */
|
||||
#define ARIZONA_SPK_OVERHEAT_EINT2_SHIFT 14 /* SPK_OVERHEAT_EINT2 */
|
||||
#define ARIZONA_SPK_OVERHEAT_EINT2_WIDTH 1 /* SPK_OVERHEAT_EINT2 */
|
||||
#define ARIZONA_HPDET_EINT2 0x2000 /* HPDET_EINT2 */
|
||||
#define ARIZONA_HPDET_EINT2_MASK 0x2000 /* HPDET_EINT2 */
|
||||
#define ARIZONA_HPDET_EINT2_SHIFT 13 /* HPDET_EINT2 */
|
||||
@@ -5139,6 +5444,77 @@
|
||||
#define ARIZONA_ISRC2_CFG_ERR_EINT2_MASK 0x0040 /* ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_ISRC2_CFG_ERR_EINT2_SHIFT 6 /* ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_ISRC2_CFG_ERR_EINT2_WIDTH 1 /* ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_HP3R_DONE_EINT2 0x0020 /* HP3R_DONE_EINT2 */
|
||||
#define ARIZONA_HP3R_DONE_EINT2_MASK 0x0020 /* HP3R_DONE_EINT2 */
|
||||
#define ARIZONA_HP3R_DONE_EINT2_SHIFT 5 /* HP3R_DONE_EINT2 */
|
||||
#define ARIZONA_HP3R_DONE_EINT2_WIDTH 1 /* HP3R_DONE_EINT2 */
|
||||
#define ARIZONA_HP3L_DONE_EINT2 0x0010 /* HP3L_DONE_EINT2 */
|
||||
#define ARIZONA_HP3L_DONE_EINT2_MASK 0x0010 /* HP3L_DONE_EINT2 */
|
||||
#define ARIZONA_HP3L_DONE_EINT2_SHIFT 4 /* HP3L_DONE_EINT2 */
|
||||
#define ARIZONA_HP3L_DONE_EINT2_WIDTH 1 /* HP3L_DONE_EINT2 */
|
||||
#define ARIZONA_HP2R_DONE_EINT2 0x0008 /* HP2R_DONE_EINT2 */
|
||||
#define ARIZONA_HP2R_DONE_EINT2_MASK 0x0008 /* HP2R_DONE_EINT2 */
|
||||
#define ARIZONA_HP2R_DONE_EINT2_SHIFT 3 /* HP2R_DONE_EINT2 */
|
||||
#define ARIZONA_HP2R_DONE_EINT2_WIDTH 1 /* HP2R_DONE_EINT2 */
|
||||
#define ARIZONA_HP2L_DONE_EINT2 0x0004 /* HP2L_DONE_EINT2 */
|
||||
#define ARIZONA_HP2L_DONE_EINT2_MASK 0x0004 /* HP2L_DONE_EINT2 */
|
||||
#define ARIZONA_HP2L_DONE_EINT2_SHIFT 2 /* HP2L_DONE_EINT2 */
|
||||
#define ARIZONA_HP2L_DONE_EINT2_WIDTH 1 /* HP2L_DONE_EINT2 */
|
||||
#define ARIZONA_HP1R_DONE_EINT2 0x0002 /* HP1R_DONE_EINT2 */
|
||||
#define ARIZONA_HP1R_DONE_EINT2_MASK 0x0002 /* HP1R_DONE_EINT2 */
|
||||
#define ARIZONA_HP1R_DONE_EINT2_SHIFT 1 /* HP1R_DONE_EINT2 */
|
||||
#define ARIZONA_HP1R_DONE_EINT2_WIDTH 1 /* HP1R_DONE_EINT2 */
|
||||
#define ARIZONA_HP1L_DONE_EINT2 0x0001 /* HP1L_DONE_EINT2 */
|
||||
#define ARIZONA_HP1L_DONE_EINT2_MASK 0x0001 /* HP1L_DONE_EINT2 */
|
||||
#define ARIZONA_HP1L_DONE_EINT2_SHIFT 0 /* HP1L_DONE_EINT2 */
|
||||
#define ARIZONA_HP1L_DONE_EINT2_WIDTH 1 /* HP1L_DONE_EINT2 */
|
||||
|
||||
/*
|
||||
* R3347 (0xD13) - IRQ2 Status 4 (Alternate layout)
|
||||
*
|
||||
* Alternate layout used on later devices, note only fields that have moved
|
||||
* are specified
|
||||
*/
|
||||
#define ARIZONA_V2_AIF3_ERR_EINT2 0x8000 /* AIF3_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF3_ERR_EINT2_MASK 0x8000 /* AIF3_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF3_ERR_EINT2_SHIFT 15 /* AIF3_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF3_ERR_EINT2_WIDTH 1 /* AIF3_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF2_ERR_EINT2 0x4000 /* AIF2_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF2_ERR_EINT2_MASK 0x4000 /* AIF2_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF2_ERR_EINT2_SHIFT 14 /* AIF2_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF2_ERR_EINT2_WIDTH 1 /* AIF2_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF1_ERR_EINT2 0x2000 /* AIF1_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF1_ERR_EINT2_MASK 0x2000 /* AIF1_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF1_ERR_EINT2_SHIFT 13 /* AIF1_ERR_EINT2 */
|
||||
#define ARIZONA_V2_AIF1_ERR_EINT2_WIDTH 1 /* AIF1_ERR_EINT2 */
|
||||
#define ARIZONA_V2_CTRLIF_ERR_EINT2 0x1000 /* CTRLIF_ERR_EINT2 */
|
||||
#define ARIZONA_V2_CTRLIF_ERR_EINT2_MASK 0x1000 /* CTRLIF_ERR_EINT2 */
|
||||
#define ARIZONA_V2_CTRLIF_ERR_EINT2_SHIFT 12 /* CTRLIF_ERR_EINT2 */
|
||||
#define ARIZONA_V2_CTRLIF_ERR_EINT2_WIDTH 1 /* CTRLIF_ERR_EINT2 */
|
||||
#define ARIZONA_V2_MIXER_DROPPED_SAMPLE_EINT2 0x0800 /* MIXER_DROPPED_SAMPLE_EINT2 */
|
||||
#define ARIZONA_V2_MIXER_DROPPED_SAMPLE_EINT2_MASK 0x0800 /* MIXER_DROPPED_SAMPLE_EINT2 */
|
||||
#define ARIZONA_V2_MIXER_DROPPED_SAMPLE_EINT2_SHIFT 11 /* MIXER_DROPPED_SAMPLE_EINT2 */
|
||||
#define ARIZONA_V2_MIXER_DROPPED_SAMPLE_EINT2_WIDTH 1 /* MIXER_DROPPED_SAMPLE_EINT2 */
|
||||
#define ARIZONA_V2_ASYNC_CLK_ENA_LOW_EINT2 0x0400 /* ASYNC_CLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_ASYNC_CLK_ENA_LOW_EINT2_MASK 0x0400 /* ASYNC_CLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_ASYNC_CLK_ENA_LOW_EINT2_SHIFT 10 /* ASYNC_CLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_ASYNC_CLK_ENA_LOW_EINT2_WIDTH 1 /* ASYNC_CLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_SYSCLK_ENA_LOW_EINT2 0x0200 /* SYSCLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_SYSCLK_ENA_LOW_EINT2_MASK 0x0200 /* SYSCLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_SYSCLK_ENA_LOW_EINT2_SHIFT 9 /* SYSCLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_SYSCLK_ENA_LOW_EINT2_WIDTH 1 /* SYSCLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_ISRC1_CFG_ERR_EINT2 0x0100 /* ISRC1_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC1_CFG_ERR_EINT2_MASK 0x0100 /* ISRC1_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC1_CFG_ERR_EINT2_SHIFT 8 /* ISRC1_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC1_CFG_ERR_EINT2_WIDTH 1 /* ISRC1_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC2_CFG_ERR_EINT2 0x0080 /* ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC2_CFG_ERR_EINT2_MASK 0x0080 /* ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC2_CFG_ERR_EINT2_SHIFT 7 /* ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC2_CFG_ERR_EINT2_WIDTH 1 /* ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC3_CFG_ERR_EINT2 0x0040 /* ISRC3_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC3_CFG_ERR_EINT2_MASK 0x0040 /* ISRC3_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC3_CFG_ERR_EINT2_SHIFT 6 /* ISRC3_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ISRC3_CFG_ERR_EINT2_WIDTH 1 /* ISRC3_CFG_ERR_EINT2 */
|
||||
|
||||
/*
|
||||
* R3348 (0xD14) - IRQ2 Status 5
|
||||
@@ -5164,6 +5540,85 @@
|
||||
#define ARIZONA_FLL1_CLOCK_OK_EINT2_SHIFT 0 /* FLL1_CLOCK_OK_EINT2 */
|
||||
#define ARIZONA_FLL1_CLOCK_OK_EINT2_WIDTH 1 /* FLL1_CLOCK_OK_EINT2 */
|
||||
|
||||
/*
|
||||
* R3348 (0xD14) - IRQ2 Status 5 (Alternate layout)
|
||||
*
|
||||
* Alternate layout used on later devices, note only fields that have moved
|
||||
* are specified
|
||||
*/
|
||||
#define ARIZONA_V2_ASRC_CFG_ERR_EINT2 0x0008 /* ASRC_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ASRC_CFG_ERR_EINT2_MASK 0x0008 /* ASRC_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ASRC_CFG_ERR_EINT2_SHIFT 3 /* ASRC_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_ASRC_CFG_ERR_EINT2_WIDTH 1 /* ASRC_CFG_ERR_EINT2 */
|
||||
|
||||
/*
|
||||
* R3349 (0xD15) - IRQ2 Status 6
|
||||
*/
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_EINT2 0x8000 /* DSP_SHARED_WR_COLL_EINT2 */
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_EINT2_MASK 0x8000 /* DSP_SHARED_WR_COLL_EINT2 */
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_EINT2_SHIFT 15 /* DSP_SHARED_WR_COLL_EINT2 */
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_EINT2_WIDTH 1 /* DSP_SHARED_WR_COLL_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT2 0x4000 /* SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT2_MASK 0x4000 /* SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT2_SHIFT 14 /* SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_SPK_SHUTDOWN_EINT2_WIDTH 1 /* SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_SPK1R_SHORT_EINT2 0x2000 /* SPK1R_SHORT_EINT2 */
|
||||
#define ARIZONA_SPK1R_SHORT_EINT2_MASK 0x2000 /* SPK1R_SHORT_EINT2 */
|
||||
#define ARIZONA_SPK1R_SHORT_EINT2_SHIFT 13 /* SPK1R_SHORT_EINT2 */
|
||||
#define ARIZONA_SPK1R_SHORT_EINT2_WIDTH 1 /* SPK1R_SHORT_EINT2 */
|
||||
#define ARIZONA_SPK1L_SHORT_EINT2 0x1000 /* SPK1L_SHORT_EINT2 */
|
||||
#define ARIZONA_SPK1L_SHORT_EINT2_MASK 0x1000 /* SPK1L_SHORT_EINT2 */
|
||||
#define ARIZONA_SPK1L_SHORT_EINT2_SHIFT 12 /* SPK1L_SHORT_EINT2 */
|
||||
#define ARIZONA_SPK1L_SHORT_EINT2_WIDTH 1 /* SPK1L_SHORT_EINT2 */
|
||||
#define ARIZONA_HP3R_SC_NEG_EINT2 0x0800 /* HP3R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP3R_SC_NEG_EINT2_MASK 0x0800 /* HP3R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP3R_SC_NEG_EINT2_SHIFT 11 /* HP3R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP3R_SC_NEG_EINT2_WIDTH 1 /* HP3R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP3R_SC_POS_EINT2 0x0400 /* HP3R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP3R_SC_POS_EINT2_MASK 0x0400 /* HP3R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP3R_SC_POS_EINT2_SHIFT 10 /* HP3R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP3R_SC_POS_EINT2_WIDTH 1 /* HP3R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP3L_SC_NEG_EINT2 0x0200 /* HP3L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP3L_SC_NEG_EINT2_MASK 0x0200 /* HP3L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP3L_SC_NEG_EINT2_SHIFT 9 /* HP3L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP3L_SC_NEG_EINT2_WIDTH 1 /* HP3L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP3L_SC_POS_EINT2 0x0100 /* HP3L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP3L_SC_POS_EINT2_MASK 0x0100 /* HP3L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP3L_SC_POS_EINT2_SHIFT 8 /* HP3L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP3L_SC_POS_EINT2_WIDTH 1 /* HP3L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP2R_SC_NEG_EINT2 0x0080 /* HP2R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP2R_SC_NEG_EINT2_MASK 0x0080 /* HP2R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP2R_SC_NEG_EINT2_SHIFT 7 /* HP2R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP2R_SC_NEG_EINT2_WIDTH 1 /* HP2R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP2R_SC_POS_EINT2 0x0040 /* HP2R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP2R_SC_POS_EINT2_MASK 0x0040 /* HP2R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP2R_SC_POS_EINT2_SHIFT 6 /* HP2R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP2R_SC_POS_EINT2_WIDTH 1 /* HP2R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP2L_SC_NEG_EINT2 0x0020 /* HP2L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP2L_SC_NEG_EINT2_MASK 0x0020 /* HP2L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP2L_SC_NEG_EINT2_SHIFT 5 /* HP2L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP2L_SC_NEG_EINT2_WIDTH 1 /* HP2L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP2L_SC_POS_EINT2 0x0010 /* HP2L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP2L_SC_POS_EINT2_MASK 0x0010 /* HP2L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP2L_SC_POS_EINT2_SHIFT 4 /* HP2L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP2L_SC_POS_EINT2_WIDTH 1 /* HP2L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP1R_SC_NEG_EINT2 0x0008 /* HP1R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP1R_SC_NEG_EINT2_MASK 0x0008 /* HP1R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP1R_SC_NEG_EINT2_SHIFT 3 /* HP1R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP1R_SC_NEG_EINT2_WIDTH 1 /* HP1R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP1R_SC_POS_EINT2 0x0004 /* HP1R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP1R_SC_POS_EINT2_MASK 0x0004 /* HP1R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP1R_SC_POS_EINT2_SHIFT 2 /* HP1R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP1R_SC_POS_EINT2_WIDTH 1 /* HP1R_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP1L_SC_NEG_EINT2 0x0002 /* HP1L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP1L_SC_NEG_EINT2_MASK 0x0002 /* HP1L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP1L_SC_NEG_EINT2_SHIFT 1 /* HP1L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP1L_SC_NEG_EINT2_WIDTH 1 /* HP1L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_HP1L_SC_POS_EINT2 0x0001 /* HP1L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP1L_SC_POS_EINT2_MASK 0x0001 /* HP1L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP1L_SC_POS_EINT2_SHIFT 0 /* HP1L_SC_POS_EINT2 */
|
||||
#define ARIZONA_HP1L_SC_POS_EINT2_WIDTH 1 /* HP1L_SC_POS_EINT2 */
|
||||
|
||||
/*
|
||||
* R3352 (0xD18) - IRQ2 Status 1 Mask
|
||||
*/
|
||||
@@ -5203,14 +5658,14 @@
|
||||
/*
|
||||
* R3354 (0xD1A) - IRQ2 Status 3 Mask
|
||||
*/
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2_MASK 0x8000 /* IM_SPK_SHUTDOWN_WARN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2_SHIFT 15 /* IM_SPK_SHUTDOWN_WARN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_WARN_EINT2_WIDTH 1 /* IM_SPK_SHUTDOWN_WARN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT2 0x4000 /* IM_SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT2_MASK 0x4000 /* IM_SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT2_SHIFT 14 /* IM_SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT2_WIDTH 1 /* IM_SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_WARN_EINT2 0x8000 /* IM_SPK_OVERHEAT_WARN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_WARN_EINT2_MASK 0x8000 /* IM_SPK_OVERHEAT_WARN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_WARN_EINT2_SHIFT 15 /* IM_SPK_OVERHEAT_WARN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_WARN_EINT2_WIDTH 1 /* IM_SPK_OVERHEAT_WARN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_EINT2 0x4000 /* IM_SPK_OVERHEAT_EINT2 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_EINT2_MASK 0x4000 /* IM_SPK_OVERHEAT_EINT2 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_EINT2_SHIFT 14 /* IM_SPK_OVERHEAT_EINT2 */
|
||||
#define ARIZONA_IM_SPK_OVERHEAT_EINT2_WIDTH 1 /* IM_SPK_OVERHEAT_EINT2 */
|
||||
#define ARIZONA_IM_HPDET_EINT2 0x2000 /* IM_HPDET_EINT2 */
|
||||
#define ARIZONA_IM_HPDET_EINT2_MASK 0x2000 /* IM_HPDET_EINT2 */
|
||||
#define ARIZONA_IM_HPDET_EINT2_SHIFT 13 /* IM_HPDET_EINT2 */
|
||||
@@ -5307,6 +5762,77 @@
|
||||
#define ARIZONA_IM_ISRC2_CFG_ERR_EINT2_MASK 0x0040 /* IM_ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_IM_ISRC2_CFG_ERR_EINT2_SHIFT 6 /* IM_ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_IM_ISRC2_CFG_ERR_EINT2_WIDTH 1 /* IM_ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_DONE_EINT2 0x0020 /* IM_HP3R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_DONE_EINT2_MASK 0x0020 /* IM_HP3R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_DONE_EINT2_SHIFT 5 /* IM_HP3R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_DONE_EINT2_WIDTH 1 /* IM_HP3R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_DONE_EINT2 0x0010 /* IM_HP3L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_DONE_EINT2_MASK 0x0010 /* IM_HP3L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_DONE_EINT2_SHIFT 4 /* IM_HP3L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_DONE_EINT2_WIDTH 1 /* IM_HP3L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_DONE_EINT2 0x0008 /* IM_HP2R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_DONE_EINT2_MASK 0x0008 /* IM_HP2R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_DONE_EINT2_SHIFT 3 /* IM_HP2R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_DONE_EINT2_WIDTH 1 /* IM_HP2R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_DONE_EINT2 0x0004 /* IM_HP2L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_DONE_EINT2_MASK 0x0004 /* IM_HP2L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_DONE_EINT2_SHIFT 2 /* IM_HP2L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_DONE_EINT2_WIDTH 1 /* IM_HP2L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_DONE_EINT2 0x0002 /* IM_HP1R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_DONE_EINT2_MASK 0x0002 /* IM_HP1R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_DONE_EINT2_SHIFT 1 /* IM_HP1R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_DONE_EINT2_WIDTH 1 /* IM_HP1R_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_DONE_EINT2 0x0001 /* IM_HP1L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_DONE_EINT2_MASK 0x0001 /* IM_HP1L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_DONE_EINT2_SHIFT 0 /* IM_HP1L_DONE_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_DONE_EINT2_WIDTH 1 /* IM_HP1L_DONE_EINT2 */
|
||||
|
||||
/*
|
||||
* R3355 (0xD1B) - IRQ2 Status 4 Mask (Alternate layout)
|
||||
*
|
||||
* Alternate layout used on later devices, note only fields that have moved
|
||||
* are specified
|
||||
*/
|
||||
#define ARIZONA_V2_IM_AIF3_ERR_EINT2 0x8000 /* IM_AIF3_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF3_ERR_EINT2_MASK 0x8000 /* IM_AIF3_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF3_ERR_EINT2_SHIFT 15 /* IM_AIF3_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF3_ERR_EINT2_WIDTH 1 /* IM_AIF3_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF2_ERR_EINT2 0x4000 /* IM_AIF2_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF2_ERR_EINT2_MASK 0x4000 /* IM_AIF2_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF2_ERR_EINT2_SHIFT 14 /* IM_AIF2_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF2_ERR_EINT2_WIDTH 1 /* IM_AIF2_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF1_ERR_EINT2 0x2000 /* IM_AIF1_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF1_ERR_EINT2_MASK 0x2000 /* IM_AIF1_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF1_ERR_EINT2_SHIFT 13 /* IM_AIF1_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_AIF1_ERR_EINT2_WIDTH 1 /* IM_AIF1_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_CTRLIF_ERR_EINT2 0x1000 /* IM_CTRLIF_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_CTRLIF_ERR_EINT2_MASK 0x1000 /* IM_CTRLIF_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_CTRLIF_ERR_EINT2_SHIFT 12 /* IM_CTRLIF_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_CTRLIF_ERR_EINT2_WIDTH 1 /* IM_CTRLIF_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_MIXER_DROPPED_SAMPLE_EINT2 0x0800 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */
|
||||
#define ARIZONA_V2_IM_MIXER_DROPPED_SAMPLE_EINT2_MASK 0x0800 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */
|
||||
#define ARIZONA_V2_IM_MIXER_DROPPED_SAMPLE_EINT2_SHIFT 11 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */
|
||||
#define ARIZONA_V2_IM_MIXER_DROPPED_SAMPLE_EINT2_WIDTH 1 /* IM_MIXER_DROPPED_SAMPLE_EINT2 */
|
||||
#define ARIZONA_V2_IM_ASYNC_CLK_ENA_LOW_EINT2 0x0400 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_IM_ASYNC_CLK_ENA_LOW_EINT2_MASK 0x0400 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_IM_ASYNC_CLK_ENA_LOW_EINT2_SHIFT 10 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_IM_ASYNC_CLK_ENA_LOW_EINT2_WIDTH 1 /* IM_ASYNC_CLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_IM_SYSCLK_ENA_LOW_EINT2 0x0200 /* IM_SYSCLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_IM_SYSCLK_ENA_LOW_EINT2_MASK 0x0200 /* IM_SYSCLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_IM_SYSCLK_ENA_LOW_EINT2_SHIFT 9 /* IM_SYSCLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_IM_SYSCLK_ENA_LOW_EINT2_WIDTH 1 /* IM_SYSCLK_ENA_LOW_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC1_CFG_ERR_EINT2 0x0100 /* IM_ISRC1_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC1_CFG_ERR_EINT2_MASK 0x0100 /* IM_ISRC1_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC1_CFG_ERR_EINT2_SHIFT 8 /* IM_ISRC1_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC1_CFG_ERR_EINT2_WIDTH 1 /* IM_ISRC1_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC2_CFG_ERR_EINT2 0x0080 /* IM_ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC2_CFG_ERR_EINT2_MASK 0x0080 /* IM_ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC2_CFG_ERR_EINT2_SHIFT 7 /* IM_ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC2_CFG_ERR_EINT2_WIDTH 1 /* IM_ISRC2_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC3_CFG_ERR_EINT2 0x0040 /* IM_ISRC3_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC3_CFG_ERR_EINT2_MASK 0x0040 /* IM_ISRC3_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC3_CFG_ERR_EINT2_SHIFT 6 /* IM_ISRC3_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ISRC3_CFG_ERR_EINT2_WIDTH 1 /* IM_ISRC3_CFG_ERR_EINT2 */
|
||||
|
||||
/*
|
||||
* R3356 (0xD1C) - IRQ2 Status 5 Mask
|
||||
@@ -5333,6 +5859,85 @@
|
||||
#define ARIZONA_IM_FLL1_CLOCK_OK_EINT2_SHIFT 0 /* IM_FLL1_CLOCK_OK_EINT2 */
|
||||
#define ARIZONA_IM_FLL1_CLOCK_OK_EINT2_WIDTH 1 /* IM_FLL1_CLOCK_OK_EINT2 */
|
||||
|
||||
/*
|
||||
* R3340 (0xD0C) - Interrupt Status 5 Mask (Alternate layout)
|
||||
*
|
||||
* Alternate layout used on later devices, note only fields that have moved
|
||||
* are specified
|
||||
*/
|
||||
#define ARIZONA_V2_IM_ASRC_CFG_ERR_EINT2 0x0008 /* IM_ASRC_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ASRC_CFG_ERR_EINT2_MASK 0x0008 /* IM_ASRC_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ASRC_CFG_ERR_EINT2_SHIFT 3 /* IM_ASRC_CFG_ERR_EINT2 */
|
||||
#define ARIZONA_V2_IM_ASRC_CFG_ERR_EINT2_WIDTH 1 /* IM_ASRC_CFG_ERR_EINT2 */
|
||||
|
||||
/*
|
||||
* R3357 (0xD1D) - IRQ2 Status 6 Mask
|
||||
*/
|
||||
#define ARIZONA_IM_DSP_SHARED_WR_COLL_EINT2 0x8000 /* IM_DSP_SHARED_WR_COLL_EINT2 */
|
||||
#define ARIZONA_IM_DSP_SHARED_WR_COLL_EINT2_MASK 0x8000 /* IM_DSP_SHARED_WR_COLL_EINT2 */
|
||||
#define ARIZONA_IM_DSP_SHARED_WR_COLL_EINT2_SHIFT 15 /* IM_DSP_SHARED_WR_COLL_EINT2 */
|
||||
#define ARIZONA_IM_DSP_SHARED_WR_COLL_EINT2_WIDTH 1 /* IM_DSP_SHARED_WR_COLL_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT2 0x4000 /* IM_SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT2_MASK 0x4000 /* IM_SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT2_SHIFT 14 /* IM_SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_IM_SPK_SHUTDOWN_EINT2_WIDTH 1 /* IM_SPK_SHUTDOWN_EINT2 */
|
||||
#define ARIZONA_IM_SPK1R_SHORT_EINT2 0x2000 /* IM_SPK1R_SHORT_EINT2 */
|
||||
#define ARIZONA_IM_SPK1R_SHORT_EINT2_MASK 0x2000 /* IM_SPK1R_SHORT_EINT2 */
|
||||
#define ARIZONA_IM_SPK1R_SHORT_EINT2_SHIFT 13 /* IM_SPK1R_SHORT_EINT2 */
|
||||
#define ARIZONA_IM_SPK1R_SHORT_EINT2_WIDTH 1 /* IM_SPK1R_SHORT_EINT2 */
|
||||
#define ARIZONA_IM_SPK1L_SHORT_EINT2 0x1000 /* IM_SPK1L_SHORT_EINT2 */
|
||||
#define ARIZONA_IM_SPK1L_SHORT_EINT2_MASK 0x1000 /* IM_SPK1L_SHORT_EINT2 */
|
||||
#define ARIZONA_IM_SPK1L_SHORT_EINT2_SHIFT 12 /* IM_SPK1L_SHORT_EINT2 */
|
||||
#define ARIZONA_IM_SPK1L_SHORT_EINT2_WIDTH 1 /* IM_SPK1L_SHORT_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_SC_NEG_EINT2 0x0800 /* IM_HP3R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_SC_NEG_EINT2_MASK 0x0800 /* IM_HP3R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_SC_NEG_EINT2_SHIFT 11 /* IM_HP3R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_SC_NEG_EINT2_WIDTH 1 /* IM_HP3R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_SC_POS_EINT2 0x0400 /* IM_HP3R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_SC_POS_EINT2_MASK 0x0400 /* IM_HP3R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_SC_POS_EINT2_SHIFT 10 /* IM_HP3R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP3R_SC_POS_EINT2_WIDTH 1 /* IM_HP3R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_SC_NEG_EINT2 0x0200 /* IM_HP3L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_SC_NEG_EINT2_MASK 0x0200 /* IM_HP3L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_SC_NEG_EINT2_SHIFT 9 /* IM_HP3L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_SC_NEG_EINT2_WIDTH 1 /* IM_HP3L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_SC_POS_EINT2 0x0100 /* IM_HP3L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_SC_POS_EINT2_MASK 0x0100 /* IM_HP3L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_SC_POS_EINT2_SHIFT 8 /* IM_HP3L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP3L_SC_POS_EINT2_WIDTH 1 /* IM_HP3L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_SC_NEG_EINT2 0x0080 /* IM_HP2R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_SC_NEG_EINT2_MASK 0x0080 /* IM_HP2R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_SC_NEG_EINT2_SHIFT 7 /* IM_HP2R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_SC_NEG_EINT2_WIDTH 1 /* IM_HP2R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_SC_POS_EINT2 0x0040 /* IM_HP2R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_SC_POS_EINT2_MASK 0x0040 /* IM_HP2R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_SC_POS_EINT2_SHIFT 6 /* IM_HP2R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP2R_SC_POS_EINT2_WIDTH 1 /* IM_HP2R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_SC_NEG_EINT2 0x0020 /* IM_HP2L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_SC_NEG_EINT2_MASK 0x0020 /* IM_HP2L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_SC_NEG_EINT2_SHIFT 5 /* IM_HP2L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_SC_NEG_EINT2_WIDTH 1 /* IM_HP2L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_SC_POS_EINT2 0x0010 /* IM_HP2L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_SC_POS_EINT2_MASK 0x0010 /* IM_HP2L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_SC_POS_EINT2_SHIFT 4 /* IM_HP2L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP2L_SC_POS_EINT2_WIDTH 1 /* IM_HP2L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_SC_NEG_EINT2 0x0008 /* IM_HP1R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_SC_NEG_EINT2_MASK 0x0008 /* IM_HP1R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_SC_NEG_EINT2_SHIFT 3 /* IM_HP1R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_SC_NEG_EINT2_WIDTH 1 /* IM_HP1R_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_SC_POS_EINT2 0x0004 /* IM_HP1R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_SC_POS_EINT2_MASK 0x0004 /* IM_HP1R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_SC_POS_EINT2_SHIFT 2 /* IM_HP1R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP1R_SC_POS_EINT2_WIDTH 1 /* IM_HP1R_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_SC_NEG_EINT2 0x0002 /* IM_HP1L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_SC_NEG_EINT2_MASK 0x0002 /* IM_HP1L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_SC_NEG_EINT2_SHIFT 1 /* IM_HP1L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_SC_NEG_EINT2_WIDTH 1 /* IM_HP1L_SC_NEG_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_SC_POS_EINT2 0x0001 /* IM_HP1L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_SC_POS_EINT2_MASK 0x0001 /* IM_HP1L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_SC_POS_EINT2_SHIFT 0 /* IM_HP1L_SC_POS_EINT2 */
|
||||
#define ARIZONA_IM_HP1L_SC_POS_EINT2_WIDTH 1 /* IM_HP1L_SC_POS_EINT2 */
|
||||
|
||||
/*
|
||||
* R3359 (0xD1F) - IRQ2 Control
|
||||
*/
|
||||
@@ -5360,14 +5965,14 @@
|
||||
/*
|
||||
* R3361 (0xD21) - Interrupt Raw Status 3
|
||||
*/
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_STS 0x8000 /* SPK_SHUTDOWN_WARN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_STS_MASK 0x8000 /* SPK_SHUTDOWN_WARN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_STS_SHIFT 15 /* SPK_SHUTDOWN_WARN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_WARN_STS_WIDTH 1 /* SPK_SHUTDOWN_WARN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_STS 0x4000 /* SPK_SHUTDOWN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_STS_MASK 0x4000 /* SPK_SHUTDOWN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_STS_SHIFT 14 /* SPK_SHUTDOWN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_STS_WIDTH 1 /* SPK_SHUTDOWN_STS */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_STS 0x8000 /* SPK_OVERHEAT_WARN_STS */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_STS_MASK 0x8000 /* SPK_OVERHEAT_WARN_STS */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_STS_SHIFT 15 /* SPK_OVERHEAT_WARN_STS */
|
||||
#define ARIZONA_SPK_OVERHEAT_WARN_STS_WIDTH 1 /* SPK_OVERHEAT_WARN_STS */
|
||||
#define ARIZONA_SPK_OVERHEAT_STS 0x4000 /* SPK_OVERHEAT_STS */
|
||||
#define ARIZONA_SPK_OVERHEAT_STS_MASK 0x4000 /* SPK_OVERHEAT_STS */
|
||||
#define ARIZONA_SPK_OVERHEAT_STS_SHIFT 14 /* SPK_OVERHEAT_STS */
|
||||
#define ARIZONA_SPK_OVERHEAT_STS_WIDTH 1 /* SPK_OVERHEAT_STS */
|
||||
#define ARIZONA_HPDET_STS 0x2000 /* HPDET_STS */
|
||||
#define ARIZONA_HPDET_STS_MASK 0x2000 /* HPDET_STS */
|
||||
#define ARIZONA_HPDET_STS_SHIFT 13 /* HPDET_STS */
|
||||
@@ -5464,6 +6069,30 @@
|
||||
#define ARIZONA_ISRC2_CFG_ERR_STS_MASK 0x0040 /* ISRC2_CFG_ERR_STS */
|
||||
#define ARIZONA_ISRC2_CFG_ERR_STS_SHIFT 6 /* ISRC2_CFG_ERR_STS */
|
||||
#define ARIZONA_ISRC2_CFG_ERR_STS_WIDTH 1 /* ISRC2_CFG_ERR_STS */
|
||||
#define ARIZONA_HP3R_DONE_STS 0x0020 /* HP3R_DONE_STS */
|
||||
#define ARIZONA_HP3R_DONE_STS_MASK 0x0020 /* HP3R_DONE_STS */
|
||||
#define ARIZONA_HP3R_DONE_STS_SHIFT 5 /* HP3R_DONE_STS */
|
||||
#define ARIZONA_HP3R_DONE_STS_WIDTH 1 /* HP3R_DONE_STS */
|
||||
#define ARIZONA_HP3L_DONE_STS 0x0010 /* HP3L_DONE_STS */
|
||||
#define ARIZONA_HP3L_DONE_STS_MASK 0x0010 /* HP3L_DONE_STS */
|
||||
#define ARIZONA_HP3L_DONE_STS_SHIFT 4 /* HP3L_DONE_STS */
|
||||
#define ARIZONA_HP3L_DONE_STS_WIDTH 1 /* HP3L_DONE_STS */
|
||||
#define ARIZONA_HP2R_DONE_STS 0x0008 /* HP2R_DONE_STS */
|
||||
#define ARIZONA_HP2R_DONE_STS_MASK 0x0008 /* HP2R_DONE_STS */
|
||||
#define ARIZONA_HP2R_DONE_STS_SHIFT 3 /* HP2R_DONE_STS */
|
||||
#define ARIZONA_HP2R_DONE_STS_WIDTH 1 /* HP2R_DONE_STS */
|
||||
#define ARIZONA_HP2L_DONE_STS 0x0004 /* HP2L_DONE_STS */
|
||||
#define ARIZONA_HP2L_DONE_STS_MASK 0x0004 /* HP2L_DONE_STS */
|
||||
#define ARIZONA_HP2L_DONE_STS_SHIFT 2 /* HP2L_DONE_STS */
|
||||
#define ARIZONA_HP2L_DONE_STS_WIDTH 1 /* HP2L_DONE_STS */
|
||||
#define ARIZONA_HP1R_DONE_STS 0x0002 /* HP1R_DONE_STS */
|
||||
#define ARIZONA_HP1R_DONE_STS_MASK 0x0002 /* HP1R_DONE_STS */
|
||||
#define ARIZONA_HP1R_DONE_STS_SHIFT 1 /* HP1R_DONE_STS */
|
||||
#define ARIZONA_HP1R_DONE_STS_WIDTH 1 /* HP1R_DONE_STS */
|
||||
#define ARIZONA_HP1L_DONE_STS 0x0001 /* HP1L_DONE_STS */
|
||||
#define ARIZONA_HP1L_DONE_STS_MASK 0x0001 /* HP1L_DONE_STS */
|
||||
#define ARIZONA_HP1L_DONE_STS_SHIFT 0 /* HP1L_DONE_STS */
|
||||
#define ARIZONA_HP1L_DONE_STS_WIDTH 1 /* HP1L_DONE_STS */
|
||||
|
||||
/*
|
||||
* R3363 (0xD23) - Interrupt Raw Status 5
|
||||
@@ -5580,6 +6209,10 @@
|
||||
#define ARIZONA_ADSP2_1_OVERCLOCKED_STS_MASK 0x0008 /* ADSP2_1_OVERCLOCKED_STS */
|
||||
#define ARIZONA_ADSP2_1_OVERCLOCKED_STS_SHIFT 3 /* ADSP2_1_OVERCLOCKED_STS */
|
||||
#define ARIZONA_ADSP2_1_OVERCLOCKED_STS_WIDTH 1 /* ADSP2_1_OVERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC3_OVERCLOCKED_STS 0x0004 /* ISRC3_OVERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC3_OVERCLOCKED_STS_MASK 0x0004 /* ISRC3_OVERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC3_OVERCLOCKED_STS_SHIFT 2 /* ISRC3_OVERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC3_OVERCLOCKED_STS_WIDTH 1 /* ISRC3_OVERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC2_OVERCLOCKED_STS 0x0002 /* ISRC2_OVERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC2_OVERCLOCKED_STS_MASK 0x0002 /* ISRC2_OVERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC2_OVERCLOCKED_STS_SHIFT 1 /* ISRC2_OVERCLOCKED_STS */
|
||||
@@ -5604,6 +6237,10 @@
|
||||
#define ARIZONA_AIF1_UNDERCLOCKED_STS_MASK 0x0100 /* AIF1_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_AIF1_UNDERCLOCKED_STS_SHIFT 8 /* AIF1_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_AIF1_UNDERCLOCKED_STS_WIDTH 1 /* AIF1_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC3_UNDERCLOCKED_STS 0x0080 /* ISRC3_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC3_UNDERCLOCKED_STS_MASK 0x0080 /* ISRC3_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC3_UNDERCLOCKED_STS_SHIFT 7 /* ISRC3_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC3_UNDERCLOCKED_STS_WIDTH 1 /* ISRC3_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC2_UNDERCLOCKED_STS 0x0040 /* ISRC2_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC2_UNDERCLOCKED_STS_MASK 0x0040 /* ISRC2_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_ISRC2_UNDERCLOCKED_STS_SHIFT 6 /* ISRC2_UNDERCLOCKED_STS */
|
||||
@@ -5633,6 +6270,74 @@
|
||||
#define ARIZONA_MIXER_UNDERCLOCKED_STS_SHIFT 0 /* MIXER_UNDERCLOCKED_STS */
|
||||
#define ARIZONA_MIXER_UNDERCLOCKED_STS_WIDTH 1 /* MIXER_UNDERCLOCKED_STS */
|
||||
|
||||
/*
|
||||
* R3368 (0xD28) - Interrupt Raw Status 9
|
||||
*/
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_STS 0x8000 /* DSP_SHARED_WR_COLL_STS */
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_STS_MASK 0x8000 /* DSP_SHARED_WR_COLL_STS */
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_STS_SHIFT 15 /* DSP_SHARED_WR_COLL_STS */
|
||||
#define ARIZONA_DSP_SHARED_WR_COLL_STS_WIDTH 1 /* DSP_SHARED_WR_COLL_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_STS 0x4000 /* SPK_SHUTDOWN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_STS_MASK 0x4000 /* SPK_SHUTDOWN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_STS_SHIFT 14 /* SPK_SHUTDOWN_STS */
|
||||
#define ARIZONA_SPK_SHUTDOWN_STS_WIDTH 1 /* SPK_SHUTDOWN_STS */
|
||||
#define ARIZONA_SPK1R_SHORT_STS 0x2000 /* SPK1R_SHORT_STS */
|
||||
#define ARIZONA_SPK1R_SHORT_STS_MASK 0x2000 /* SPK1R_SHORT_STS */
|
||||
#define ARIZONA_SPK1R_SHORT_STS_SHIFT 13 /* SPK1R_SHORT_STS */
|
||||
#define ARIZONA_SPK1R_SHORT_STS_WIDTH 1 /* SPK1R_SHORT_STS */
|
||||
#define ARIZONA_SPK1L_SHORT_STS 0x1000 /* SPK1L_SHORT_STS */
|
||||
#define ARIZONA_SPK1L_SHORT_STS_MASK 0x1000 /* SPK1L_SHORT_STS */
|
||||
#define ARIZONA_SPK1L_SHORT_STS_SHIFT 12 /* SPK1L_SHORT_STS */
|
||||
#define ARIZONA_SPK1L_SHORT_STS_WIDTH 1 /* SPK1L_SHORT_STS */
|
||||
#define ARIZONA_HP3R_SC_NEG_STS 0x0800 /* HP3R_SC_NEG_STS */
|
||||
#define ARIZONA_HP3R_SC_NEG_STS_MASK 0x0800 /* HP3R_SC_NEG_STS */
|
||||
#define ARIZONA_HP3R_SC_NEG_STS_SHIFT 11 /* HP3R_SC_NEG_STS */
|
||||
#define ARIZONA_HP3R_SC_NEG_STS_WIDTH 1 /* HP3R_SC_NEG_STS */
|
||||
#define ARIZONA_HP3R_SC_POS_STS 0x0400 /* HP3R_SC_POS_STS */
|
||||
#define ARIZONA_HP3R_SC_POS_STS_MASK 0x0400 /* HP3R_SC_POS_STS */
|
||||
#define ARIZONA_HP3R_SC_POS_STS_SHIFT 10 /* HP3R_SC_POS_STS */
|
||||
#define ARIZONA_HP3R_SC_POS_STS_WIDTH 1 /* HP3R_SC_POS_STS */
|
||||
#define ARIZONA_HP3L_SC_NEG_STS 0x0200 /* HP3L_SC_NEG_STS */
|
||||
#define ARIZONA_HP3L_SC_NEG_STS_MASK 0x0200 /* HP3L_SC_NEG_STS */
|
||||
#define ARIZONA_HP3L_SC_NEG_STS_SHIFT 9 /* HP3L_SC_NEG_STS */
|
||||
#define ARIZONA_HP3L_SC_NEG_STS_WIDTH 1 /* HP3L_SC_NEG_STS */
|
||||
#define ARIZONA_HP3L_SC_POS_STS 0x0100 /* HP3L_SC_POS_STS */
|
||||
#define ARIZONA_HP3L_SC_POS_STS_MASK 0x0100 /* HP3L_SC_POS_STS */
|
||||
#define ARIZONA_HP3L_SC_POS_STS_SHIFT 8 /* HP3L_SC_POS_STS */
|
||||
#define ARIZONA_HP3L_SC_POS_STS_WIDTH 1 /* HP3L_SC_POS_STS */
|
||||
#define ARIZONA_HP2R_SC_NEG_STS 0x0080 /* HP2R_SC_NEG_STS */
|
||||
#define ARIZONA_HP2R_SC_NEG_STS_MASK 0x0080 /* HP2R_SC_NEG_STS */
|
||||
#define ARIZONA_HP2R_SC_NEG_STS_SHIFT 7 /* HP2R_SC_NEG_STS */
|
||||
#define ARIZONA_HP2R_SC_NEG_STS_WIDTH 1 /* HP2R_SC_NEG_STS */
|
||||
#define ARIZONA_HP2R_SC_POS_STS 0x0040 /* HP2R_SC_POS_STS */
|
||||
#define ARIZONA_HP2R_SC_POS_STS_MASK 0x0040 /* HP2R_SC_POS_STS */
|
||||
#define ARIZONA_HP2R_SC_POS_STS_SHIFT 6 /* HP2R_SC_POS_STS */
|
||||
#define ARIZONA_HP2R_SC_POS_STS_WIDTH 1 /* HP2R_SC_POS_STS */
|
||||
#define ARIZONA_HP2L_SC_NEG_STS 0x0020 /* HP2L_SC_NEG_STS */
|
||||
#define ARIZONA_HP2L_SC_NEG_STS_MASK 0x0020 /* HP2L_SC_NEG_STS */
|
||||
#define ARIZONA_HP2L_SC_NEG_STS_SHIFT 5 /* HP2L_SC_NEG_STS */
|
||||
#define ARIZONA_HP2L_SC_NEG_STS_WIDTH 1 /* HP2L_SC_NEG_STS */
|
||||
#define ARIZONA_HP2L_SC_POS_STS 0x0010 /* HP2L_SC_POS_STS */
|
||||
#define ARIZONA_HP2L_SC_POS_STS_MASK 0x0010 /* HP2L_SC_POS_STS */
|
||||
#define ARIZONA_HP2L_SC_POS_STS_SHIFT 4 /* HP2L_SC_POS_STS */
|
||||
#define ARIZONA_HP2L_SC_POS_STS_WIDTH 1 /* HP2L_SC_POS_STS */
|
||||
#define ARIZONA_HP1R_SC_NEG_STS 0x0008 /* HP1R_SC_NEG_STS */
|
||||
#define ARIZONA_HP1R_SC_NEG_STS_MASK 0x0008 /* HP1R_SC_NEG_STS */
|
||||
#define ARIZONA_HP1R_SC_NEG_STS_SHIFT 3 /* HP1R_SC_NEG_STS */
|
||||
#define ARIZONA_HP1R_SC_NEG_STS_WIDTH 1 /* HP1R_SC_NEG_STS */
|
||||
#define ARIZONA_HP1R_SC_POS_STS 0x0004 /* HP1R_SC_POS_STS */
|
||||
#define ARIZONA_HP1R_SC_POS_STS_MASK 0x0004 /* HP1R_SC_POS_STS */
|
||||
#define ARIZONA_HP1R_SC_POS_STS_SHIFT 2 /* HP1R_SC_POS_STS */
|
||||
#define ARIZONA_HP1R_SC_POS_STS_WIDTH 1 /* HP1R_SC_POS_STS */
|
||||
#define ARIZONA_HP1L_SC_NEG_STS 0x0002 /* HP1L_SC_NEG_STS */
|
||||
#define ARIZONA_HP1L_SC_NEG_STS_MASK 0x0002 /* HP1L_SC_NEG_STS */
|
||||
#define ARIZONA_HP1L_SC_NEG_STS_SHIFT 1 /* HP1L_SC_NEG_STS */
|
||||
#define ARIZONA_HP1L_SC_NEG_STS_WIDTH 1 /* HP1L_SC_NEG_STS */
|
||||
#define ARIZONA_HP1L_SC_POS_STS 0x0001 /* HP1L_SC_POS_STS */
|
||||
#define ARIZONA_HP1L_SC_POS_STS_MASK 0x0001 /* HP1L_SC_POS_STS */
|
||||
#define ARIZONA_HP1L_SC_POS_STS_SHIFT 0 /* HP1L_SC_POS_STS */
|
||||
#define ARIZONA_HP1L_SC_POS_STS_WIDTH 1 /* HP1L_SC_POS_STS */
|
||||
|
||||
/*
|
||||
* R3392 (0xD40) - IRQ Pin Status
|
||||
*/
|
||||
|
||||
+58
-52
@@ -16,7 +16,9 @@
|
||||
#ifndef __LINUX_MFD_CROS_EC_H
|
||||
#define __LINUX_MFD_CROS_EC_H
|
||||
|
||||
#include <linux/notifier.h>
|
||||
#include <linux/mfd/cros_ec_commands.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
/*
|
||||
* Command interface between EC and AP, for LPC, I2C and SPI interfaces.
|
||||
@@ -33,83 +35,76 @@ enum {
|
||||
EC_MSG_TX_PROTO_BYTES,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cros_ec_msg - A message sent to the EC, and its reply
|
||||
*
|
||||
/*
|
||||
* @version: Command version number (often 0)
|
||||
* @cmd: Command to send (EC_CMD_...)
|
||||
* @out_buf: Outgoing payload (to EC)
|
||||
* @outlen: Outgoing length
|
||||
* @in_buf: Incoming payload (from EC)
|
||||
* @in_len: Incoming length
|
||||
* @command: Command to send (EC_CMD_...)
|
||||
* @outdata: Outgoing data to EC
|
||||
* @outsize: Outgoing length in bytes
|
||||
* @indata: Where to put the incoming data from EC
|
||||
* @insize: Max number of bytes to accept from EC
|
||||
* @result: EC's response to the command (separate from communication failure)
|
||||
*/
|
||||
struct cros_ec_msg {
|
||||
u8 version;
|
||||
u8 cmd;
|
||||
uint8_t *out_buf;
|
||||
int out_len;
|
||||
uint8_t *in_buf;
|
||||
int in_len;
|
||||
struct cros_ec_command {
|
||||
uint32_t version;
|
||||
uint32_t command;
|
||||
uint8_t *outdata;
|
||||
uint32_t outsize;
|
||||
uint8_t *indata;
|
||||
uint32_t insize;
|
||||
uint32_t result;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cros_ec_device - Information about a ChromeOS EC device
|
||||
*
|
||||
* @name: Name of this EC interface
|
||||
* @ec_name: name of EC device (e.g. 'chromeos-ec')
|
||||
* @phys_name: name of physical comms layer (e.g. 'i2c-4')
|
||||
* @dev: Device pointer
|
||||
* @was_wake_device: true if this device was set to wake the system from
|
||||
* sleep at the last suspend
|
||||
* @cmd_xfer: send command to EC and get response
|
||||
* Returns the number of bytes received if the communication succeeded, but
|
||||
* that doesn't mean the EC was happy with the command. The caller
|
||||
* should check msg.result for the EC's result code.
|
||||
*
|
||||
* @priv: Private data
|
||||
* @irq: Interrupt to use
|
||||
* @din: input buffer (from EC)
|
||||
* @dout: output buffer (to EC)
|
||||
* @din: input buffer (for data from EC)
|
||||
* @dout: output buffer (for data to EC)
|
||||
* \note
|
||||
* These two buffers will always be dword-aligned and include enough
|
||||
* space for up to 7 word-alignment bytes also, so we can ensure that
|
||||
* the body of the message is always dword-aligned (64-bit).
|
||||
*
|
||||
* We use this alignment to keep ARM and x86 happy. Probably word
|
||||
* alignment would be OK, there might be a small performance advantage
|
||||
* to using dword.
|
||||
* @din_size: size of din buffer
|
||||
* @dout_size: size of dout buffer
|
||||
* @command_send: send a command
|
||||
* @command_recv: receive a command
|
||||
* @ec_name: name of EC device (e.g. 'chromeos-ec')
|
||||
* @phys_name: name of physical comms layer (e.g. 'i2c-4')
|
||||
* @din_size: size of din buffer to allocate (zero to use static din)
|
||||
* @dout_size: size of dout buffer to allocate (zero to use static dout)
|
||||
* @parent: pointer to parent device (e.g. i2c or spi device)
|
||||
* @dev: Device pointer
|
||||
* dev_lock: Lock to prevent concurrent access
|
||||
* @wake_enabled: true if this device can wake the system from sleep
|
||||
* @was_wake_device: true if this device was set to wake the system from
|
||||
* sleep at the last suspend
|
||||
* @event_notifier: interrupt event notifier for transport devices
|
||||
* @lock: one transaction at a time
|
||||
*/
|
||||
struct cros_ec_device {
|
||||
const char *name;
|
||||
|
||||
/* These are used by other drivers that want to talk to the EC */
|
||||
const char *ec_name;
|
||||
const char *phys_name;
|
||||
struct device *dev;
|
||||
bool was_wake_device;
|
||||
struct class *cros_class;
|
||||
int (*cmd_xfer)(struct cros_ec_device *ec,
|
||||
struct cros_ec_command *msg);
|
||||
|
||||
/* These are used to implement the platform-specific interface */
|
||||
void *priv;
|
||||
int irq;
|
||||
uint8_t *din;
|
||||
uint8_t *dout;
|
||||
int din_size;
|
||||
int dout_size;
|
||||
int (*command_send)(struct cros_ec_device *ec,
|
||||
uint16_t cmd, void *out_buf, int out_len);
|
||||
int (*command_recv)(struct cros_ec_device *ec,
|
||||
uint16_t cmd, void *in_buf, int in_len);
|
||||
int (*command_sendrecv)(struct cros_ec_device *ec,
|
||||
uint16_t cmd, void *out_buf, int out_len,
|
||||
void *in_buf, int in_len);
|
||||
int (*command_xfer)(struct cros_ec_device *ec,
|
||||
struct cros_ec_msg *msg);
|
||||
|
||||
const char *ec_name;
|
||||
const char *phys_name;
|
||||
struct device *parent;
|
||||
|
||||
/* These are --private-- fields - do not assign */
|
||||
struct device *dev;
|
||||
struct mutex dev_lock;
|
||||
bool wake_enabled;
|
||||
bool was_wake_device;
|
||||
struct blocking_notifier_head event_notifier;
|
||||
struct mutex lock;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -143,13 +138,24 @@ int cros_ec_resume(struct cros_ec_device *ec_dev);
|
||||
* @msg: Message to write
|
||||
*/
|
||||
int cros_ec_prepare_tx(struct cros_ec_device *ec_dev,
|
||||
struct cros_ec_msg *msg);
|
||||
struct cros_ec_command *msg);
|
||||
|
||||
/**
|
||||
* cros_ec_check_result - Check ec_msg->result
|
||||
*
|
||||
* This is used by ChromeOS EC drivers to check the ec_msg->result for
|
||||
* errors and to warn about them.
|
||||
*
|
||||
* @ec_dev: EC device
|
||||
* @msg: Message to check
|
||||
*/
|
||||
int cros_ec_check_result(struct cros_ec_device *ec_dev,
|
||||
struct cros_ec_command *msg);
|
||||
|
||||
/**
|
||||
* cros_ec_remove - Remove a ChromeOS EC
|
||||
*
|
||||
* Call this to deregister a ChromeOS EC. After this you should call
|
||||
* cros_ec_free().
|
||||
* Call this to deregister a ChromeOS EC, then clean up any private data.
|
||||
*
|
||||
* @ec_dev: Device to register
|
||||
* @return 0 if ok, -ve on error
|
||||
|
||||
@@ -34,7 +34,8 @@ enum da9063_models {
|
||||
};
|
||||
|
||||
enum da9063_variant_codes {
|
||||
PMIC_DA9063_BB = 0x5
|
||||
PMIC_DA9063_AD = 0x3,
|
||||
PMIC_DA9063_BB = 0x5,
|
||||
};
|
||||
|
||||
/* Interrupts */
|
||||
|
||||
@@ -104,16 +104,27 @@
|
||||
#define DA9063_REG_COUNT_D 0x43
|
||||
#define DA9063_REG_COUNT_MO 0x44
|
||||
#define DA9063_REG_COUNT_Y 0x45
|
||||
#define DA9063_REG_ALARM_S 0x46
|
||||
#define DA9063_REG_ALARM_MI 0x47
|
||||
#define DA9063_REG_ALARM_H 0x48
|
||||
#define DA9063_REG_ALARM_D 0x49
|
||||
#define DA9063_REG_ALARM_MO 0x4A
|
||||
#define DA9063_REG_ALARM_Y 0x4B
|
||||
#define DA9063_REG_SECOND_A 0x4C
|
||||
#define DA9063_REG_SECOND_B 0x4D
|
||||
#define DA9063_REG_SECOND_C 0x4E
|
||||
#define DA9063_REG_SECOND_D 0x4F
|
||||
|
||||
#define DA9063_AD_REG_ALARM_MI 0x46
|
||||
#define DA9063_AD_REG_ALARM_H 0x47
|
||||
#define DA9063_AD_REG_ALARM_D 0x48
|
||||
#define DA9063_AD_REG_ALARM_MO 0x49
|
||||
#define DA9063_AD_REG_ALARM_Y 0x4A
|
||||
#define DA9063_AD_REG_SECOND_A 0x4B
|
||||
#define DA9063_AD_REG_SECOND_B 0x4C
|
||||
#define DA9063_AD_REG_SECOND_C 0x4D
|
||||
#define DA9063_AD_REG_SECOND_D 0x4E
|
||||
|
||||
#define DA9063_BB_REG_ALARM_S 0x46
|
||||
#define DA9063_BB_REG_ALARM_MI 0x47
|
||||
#define DA9063_BB_REG_ALARM_H 0x48
|
||||
#define DA9063_BB_REG_ALARM_D 0x49
|
||||
#define DA9063_BB_REG_ALARM_MO 0x4A
|
||||
#define DA9063_BB_REG_ALARM_Y 0x4B
|
||||
#define DA9063_BB_REG_SECOND_A 0x4C
|
||||
#define DA9063_BB_REG_SECOND_B 0x4D
|
||||
#define DA9063_BB_REG_SECOND_C 0x4E
|
||||
#define DA9063_BB_REG_SECOND_D 0x4F
|
||||
|
||||
/* Sequencer Control Registers */
|
||||
#define DA9063_REG_SEQ 0x81
|
||||
@@ -223,37 +234,67 @@
|
||||
#define DA9063_REG_CONFIG_J 0x10F
|
||||
#define DA9063_REG_CONFIG_K 0x110
|
||||
#define DA9063_REG_CONFIG_L 0x111
|
||||
#define DA9063_REG_CONFIG_M 0x112
|
||||
#define DA9063_REG_CONFIG_N 0x113
|
||||
|
||||
#define DA9063_REG_MON_REG_1 0x114
|
||||
#define DA9063_REG_MON_REG_2 0x115
|
||||
#define DA9063_REG_MON_REG_3 0x116
|
||||
#define DA9063_REG_MON_REG_4 0x117
|
||||
#define DA9063_REG_MON_REG_5 0x11E
|
||||
#define DA9063_REG_MON_REG_6 0x11F
|
||||
#define DA9063_REG_TRIM_CLDR 0x120
|
||||
#define DA9063_AD_REG_MON_REG_1 0x112
|
||||
#define DA9063_AD_REG_MON_REG_2 0x113
|
||||
#define DA9063_AD_REG_MON_REG_3 0x114
|
||||
#define DA9063_AD_REG_MON_REG_4 0x115
|
||||
#define DA9063_AD_REG_MON_REG_5 0x116
|
||||
#define DA9063_AD_REG_MON_REG_6 0x117
|
||||
#define DA9063_AD_REG_TRIM_CLDR 0x118
|
||||
|
||||
#define DA9063_AD_REG_GP_ID_0 0x119
|
||||
#define DA9063_AD_REG_GP_ID_1 0x11A
|
||||
#define DA9063_AD_REG_GP_ID_2 0x11B
|
||||
#define DA9063_AD_REG_GP_ID_3 0x11C
|
||||
#define DA9063_AD_REG_GP_ID_4 0x11D
|
||||
#define DA9063_AD_REG_GP_ID_5 0x11E
|
||||
#define DA9063_AD_REG_GP_ID_6 0x11F
|
||||
#define DA9063_AD_REG_GP_ID_7 0x120
|
||||
#define DA9063_AD_REG_GP_ID_8 0x121
|
||||
#define DA9063_AD_REG_GP_ID_9 0x122
|
||||
#define DA9063_AD_REG_GP_ID_10 0x123
|
||||
#define DA9063_AD_REG_GP_ID_11 0x124
|
||||
#define DA9063_AD_REG_GP_ID_12 0x125
|
||||
#define DA9063_AD_REG_GP_ID_13 0x126
|
||||
#define DA9063_AD_REG_GP_ID_14 0x127
|
||||
#define DA9063_AD_REG_GP_ID_15 0x128
|
||||
#define DA9063_AD_REG_GP_ID_16 0x129
|
||||
#define DA9063_AD_REG_GP_ID_17 0x12A
|
||||
#define DA9063_AD_REG_GP_ID_18 0x12B
|
||||
#define DA9063_AD_REG_GP_ID_19 0x12C
|
||||
|
||||
#define DA9063_BB_REG_CONFIG_M 0x112
|
||||
#define DA9063_BB_REG_CONFIG_N 0x113
|
||||
|
||||
#define DA9063_BB_REG_MON_REG_1 0x114
|
||||
#define DA9063_BB_REG_MON_REG_2 0x115
|
||||
#define DA9063_BB_REG_MON_REG_3 0x116
|
||||
#define DA9063_BB_REG_MON_REG_4 0x117
|
||||
#define DA9063_BB_REG_MON_REG_5 0x11E
|
||||
#define DA9063_BB_REG_MON_REG_6 0x11F
|
||||
#define DA9063_BB_REG_TRIM_CLDR 0x120
|
||||
/* General Purpose Registers */
|
||||
#define DA9063_REG_GP_ID_0 0x121
|
||||
#define DA9063_REG_GP_ID_1 0x122
|
||||
#define DA9063_REG_GP_ID_2 0x123
|
||||
#define DA9063_REG_GP_ID_3 0x124
|
||||
#define DA9063_REG_GP_ID_4 0x125
|
||||
#define DA9063_REG_GP_ID_5 0x126
|
||||
#define DA9063_REG_GP_ID_6 0x127
|
||||
#define DA9063_REG_GP_ID_7 0x128
|
||||
#define DA9063_REG_GP_ID_8 0x129
|
||||
#define DA9063_REG_GP_ID_9 0x12A
|
||||
#define DA9063_REG_GP_ID_10 0x12B
|
||||
#define DA9063_REG_GP_ID_11 0x12C
|
||||
#define DA9063_REG_GP_ID_12 0x12D
|
||||
#define DA9063_REG_GP_ID_13 0x12E
|
||||
#define DA9063_REG_GP_ID_14 0x12F
|
||||
#define DA9063_REG_GP_ID_15 0x130
|
||||
#define DA9063_REG_GP_ID_16 0x131
|
||||
#define DA9063_REG_GP_ID_17 0x132
|
||||
#define DA9063_REG_GP_ID_18 0x133
|
||||
#define DA9063_REG_GP_ID_19 0x134
|
||||
#define DA9063_BB_REG_GP_ID_0 0x121
|
||||
#define DA9063_BB_REG_GP_ID_1 0x122
|
||||
#define DA9063_BB_REG_GP_ID_2 0x123
|
||||
#define DA9063_BB_REG_GP_ID_3 0x124
|
||||
#define DA9063_BB_REG_GP_ID_4 0x125
|
||||
#define DA9063_BB_REG_GP_ID_5 0x126
|
||||
#define DA9063_BB_REG_GP_ID_6 0x127
|
||||
#define DA9063_BB_REG_GP_ID_7 0x128
|
||||
#define DA9063_BB_REG_GP_ID_8 0x129
|
||||
#define DA9063_BB_REG_GP_ID_9 0x12A
|
||||
#define DA9063_BB_REG_GP_ID_10 0x12B
|
||||
#define DA9063_BB_REG_GP_ID_11 0x12C
|
||||
#define DA9063_BB_REG_GP_ID_12 0x12D
|
||||
#define DA9063_BB_REG_GP_ID_13 0x12E
|
||||
#define DA9063_BB_REG_GP_ID_14 0x12F
|
||||
#define DA9063_BB_REG_GP_ID_15 0x130
|
||||
#define DA9063_BB_REG_GP_ID_16 0x131
|
||||
#define DA9063_BB_REG_GP_ID_17 0x132
|
||||
#define DA9063_BB_REG_GP_ID_18 0x133
|
||||
#define DA9063_BB_REG_GP_ID_19 0x134
|
||||
|
||||
/* Chip ID and variant */
|
||||
#define DA9063_REG_CHIP_ID 0x181
|
||||
@@ -404,10 +445,10 @@
|
||||
/* DA9063_REG_CONTROL_B (addr=0x0F) */
|
||||
#define DA9063_CHG_SEL 0x01
|
||||
#define DA9063_WATCHDOG_PD 0x02
|
||||
#define DA9063_RESET_BLINKING 0x04
|
||||
#define DA9063_BB_RESET_BLINKING 0x04
|
||||
#define DA9063_NRES_MODE 0x08
|
||||
#define DA9063_NONKEY_LOCK 0x10
|
||||
#define DA9063_BUCK_SLOWSTART 0x80
|
||||
#define DA9063_BB_BUCK_SLOWSTART 0x80
|
||||
|
||||
/* DA9063_REG_CONTROL_C (addr=0x10) */
|
||||
#define DA9063_DEBOUNCING_MASK 0x07
|
||||
@@ -467,7 +508,7 @@
|
||||
#define DA9063_GPADC_PAUSE 0x02
|
||||
#define DA9063_PMIF_DIS 0x04
|
||||
#define DA9063_HS2WIRE_DIS 0x08
|
||||
#define DA9063_CLDR_PAUSE 0x10
|
||||
#define DA9063_BB_CLDR_PAUSE 0x10
|
||||
#define DA9063_BBAT_DIS 0x20
|
||||
#define DA9063_OUT_32K_PAUSE 0x40
|
||||
#define DA9063_PMCONT_DIS 0x80
|
||||
@@ -844,7 +885,7 @@
|
||||
#define DA9063_MONITOR 0x40
|
||||
|
||||
/* DA9063_REG_ALARM_S (addr=0x46) */
|
||||
#define DA9063_ALARM_S_MASK 0x3F
|
||||
#define DA9063_BB_ALARM_S_MASK 0x3F
|
||||
#define DA9063_ALARM_STATUS_ALARM 0x80
|
||||
#define DA9063_ALARM_STATUS_TICK 0x40
|
||||
/* DA9063_REG_ALARM_MI (addr=0x47) */
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* intel_soc_pmic.h - Intel SoC PMIC Driver
|
||||
*
|
||||
* Copyright (C) 2012-2014 Intel Corporation. All rights reserved.
|
||||
*
|
||||
* 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 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.
|
||||
*
|
||||
* Author: Yang, Bin <bin.yang@intel.com>
|
||||
* Author: Zhu, Lejun <lejun.zhu@linux.intel.com>
|
||||
*/
|
||||
|
||||
#ifndef __INTEL_SOC_PMIC_H__
|
||||
#define __INTEL_SOC_PMIC_H__
|
||||
|
||||
#include <linux/regmap.h>
|
||||
|
||||
struct intel_soc_pmic {
|
||||
int irq;
|
||||
struct regmap *regmap;
|
||||
struct regmap_irq_chip_data *irq_chip_data;
|
||||
};
|
||||
|
||||
#endif /* __INTEL_SOC_PMIC_H__ */
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* max77686-private.h - Voltage regulator driver for the Maxim 77686
|
||||
* max77686-private.h - Voltage regulator driver for the Maxim 77686/802
|
||||
*
|
||||
* Copyright (C) 2012 Samsung Electrnoics
|
||||
* Chiwoong Byun <woong.byun@samsung.com>
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#define MAX77686_REG_INVALID (0xff)
|
||||
|
||||
/* MAX77686 PMIC registers */
|
||||
enum max77686_pmic_reg {
|
||||
MAX77686_REG_DEVICE_ID = 0x00,
|
||||
MAX77686_REG_INTSRC = 0x01,
|
||||
@@ -181,8 +182,209 @@ enum max77686_rtc_reg {
|
||||
MAX77686_ALARM2_DATE = 0x1B,
|
||||
};
|
||||
|
||||
#define MAX77686_IRQSRC_PMIC (0)
|
||||
#define MAX77686_IRQSRC_RTC (1 << 0)
|
||||
/* MAX77802 PMIC registers */
|
||||
enum max77802_pmic_reg {
|
||||
MAX77802_REG_DEVICE_ID = 0x00,
|
||||
MAX77802_REG_INTSRC = 0x01,
|
||||
MAX77802_REG_INT1 = 0x02,
|
||||
MAX77802_REG_INT2 = 0x03,
|
||||
|
||||
MAX77802_REG_INT1MSK = 0x04,
|
||||
MAX77802_REG_INT2MSK = 0x05,
|
||||
|
||||
MAX77802_REG_STATUS1 = 0x06,
|
||||
MAX77802_REG_STATUS2 = 0x07,
|
||||
|
||||
MAX77802_REG_PWRON = 0x08,
|
||||
/* Reserved: 0x09 */
|
||||
MAX77802_REG_MRSTB = 0x0A,
|
||||
MAX77802_REG_EPWRHOLD = 0x0B,
|
||||
/* Reserved: 0x0C-0x0D */
|
||||
MAX77802_REG_BOOSTCTRL = 0x0E,
|
||||
MAX77802_REG_BOOSTOUT = 0x0F,
|
||||
|
||||
MAX77802_REG_BUCK1CTRL = 0x10,
|
||||
MAX77802_REG_BUCK1DVS1 = 0x11,
|
||||
MAX77802_REG_BUCK1DVS2 = 0x12,
|
||||
MAX77802_REG_BUCK1DVS3 = 0x13,
|
||||
MAX77802_REG_BUCK1DVS4 = 0x14,
|
||||
MAX77802_REG_BUCK1DVS5 = 0x15,
|
||||
MAX77802_REG_BUCK1DVS6 = 0x16,
|
||||
MAX77802_REG_BUCK1DVS7 = 0x17,
|
||||
MAX77802_REG_BUCK1DVS8 = 0x18,
|
||||
/* Reserved: 0x19 */
|
||||
MAX77802_REG_BUCK2CTRL1 = 0x1A,
|
||||
MAX77802_REG_BUCK2CTRL2 = 0x1B,
|
||||
MAX77802_REG_BUCK2PHTRAN = 0x1C,
|
||||
MAX77802_REG_BUCK2DVS1 = 0x1D,
|
||||
MAX77802_REG_BUCK2DVS2 = 0x1E,
|
||||
MAX77802_REG_BUCK2DVS3 = 0x1F,
|
||||
MAX77802_REG_BUCK2DVS4 = 0x20,
|
||||
MAX77802_REG_BUCK2DVS5 = 0x21,
|
||||
MAX77802_REG_BUCK2DVS6 = 0x22,
|
||||
MAX77802_REG_BUCK2DVS7 = 0x23,
|
||||
MAX77802_REG_BUCK2DVS8 = 0x24,
|
||||
/* Reserved: 0x25-0x26 */
|
||||
MAX77802_REG_BUCK3CTRL1 = 0x27,
|
||||
MAX77802_REG_BUCK3DVS1 = 0x28,
|
||||
MAX77802_REG_BUCK3DVS2 = 0x29,
|
||||
MAX77802_REG_BUCK3DVS3 = 0x2A,
|
||||
MAX77802_REG_BUCK3DVS4 = 0x2B,
|
||||
MAX77802_REG_BUCK3DVS5 = 0x2C,
|
||||
MAX77802_REG_BUCK3DVS6 = 0x2D,
|
||||
MAX77802_REG_BUCK3DVS7 = 0x2E,
|
||||
MAX77802_REG_BUCK3DVS8 = 0x2F,
|
||||
/* Reserved: 0x30-0x36 */
|
||||
MAX77802_REG_BUCK4CTRL1 = 0x37,
|
||||
MAX77802_REG_BUCK4DVS1 = 0x38,
|
||||
MAX77802_REG_BUCK4DVS2 = 0x39,
|
||||
MAX77802_REG_BUCK4DVS3 = 0x3A,
|
||||
MAX77802_REG_BUCK4DVS4 = 0x3B,
|
||||
MAX77802_REG_BUCK4DVS5 = 0x3C,
|
||||
MAX77802_REG_BUCK4DVS6 = 0x3D,
|
||||
MAX77802_REG_BUCK4DVS7 = 0x3E,
|
||||
MAX77802_REG_BUCK4DVS8 = 0x3F,
|
||||
/* Reserved: 0x40 */
|
||||
MAX77802_REG_BUCK5CTRL = 0x41,
|
||||
MAX77802_REG_BUCK5OUT = 0x42,
|
||||
/* Reserved: 0x43 */
|
||||
MAX77802_REG_BUCK6CTRL = 0x44,
|
||||
MAX77802_REG_BUCK6DVS1 = 0x45,
|
||||
MAX77802_REG_BUCK6DVS2 = 0x46,
|
||||
MAX77802_REG_BUCK6DVS3 = 0x47,
|
||||
MAX77802_REG_BUCK6DVS4 = 0x48,
|
||||
MAX77802_REG_BUCK6DVS5 = 0x49,
|
||||
MAX77802_REG_BUCK6DVS6 = 0x4A,
|
||||
MAX77802_REG_BUCK6DVS7 = 0x4B,
|
||||
MAX77802_REG_BUCK6DVS8 = 0x4C,
|
||||
/* Reserved: 0x4D */
|
||||
MAX77802_REG_BUCK7CTRL = 0x4E,
|
||||
MAX77802_REG_BUCK7OUT = 0x4F,
|
||||
/* Reserved: 0x50 */
|
||||
MAX77802_REG_BUCK8CTRL = 0x51,
|
||||
MAX77802_REG_BUCK8OUT = 0x52,
|
||||
/* Reserved: 0x53 */
|
||||
MAX77802_REG_BUCK9CTRL = 0x54,
|
||||
MAX77802_REG_BUCK9OUT = 0x55,
|
||||
/* Reserved: 0x56 */
|
||||
MAX77802_REG_BUCK10CTRL = 0x57,
|
||||
MAX77802_REG_BUCK10OUT = 0x58,
|
||||
|
||||
/* Reserved: 0x59-0x5F */
|
||||
|
||||
MAX77802_REG_LDO1CTRL1 = 0x60,
|
||||
MAX77802_REG_LDO2CTRL1 = 0x61,
|
||||
MAX77802_REG_LDO3CTRL1 = 0x62,
|
||||
MAX77802_REG_LDO4CTRL1 = 0x63,
|
||||
MAX77802_REG_LDO5CTRL1 = 0x64,
|
||||
MAX77802_REG_LDO6CTRL1 = 0x65,
|
||||
MAX77802_REG_LDO7CTRL1 = 0x66,
|
||||
MAX77802_REG_LDO8CTRL1 = 0x67,
|
||||
MAX77802_REG_LDO9CTRL1 = 0x68,
|
||||
MAX77802_REG_LDO10CTRL1 = 0x69,
|
||||
MAX77802_REG_LDO11CTRL1 = 0x6A,
|
||||
MAX77802_REG_LDO12CTRL1 = 0x6B,
|
||||
MAX77802_REG_LDO13CTRL1 = 0x6C,
|
||||
MAX77802_REG_LDO14CTRL1 = 0x6D,
|
||||
MAX77802_REG_LDO15CTRL1 = 0x6E,
|
||||
/* Reserved: 0x6F */
|
||||
MAX77802_REG_LDO17CTRL1 = 0x70,
|
||||
MAX77802_REG_LDO18CTRL1 = 0x71,
|
||||
MAX77802_REG_LDO19CTRL1 = 0x72,
|
||||
MAX77802_REG_LDO20CTRL1 = 0x73,
|
||||
MAX77802_REG_LDO21CTRL1 = 0x74,
|
||||
MAX77802_REG_LDO22CTRL1 = 0x75,
|
||||
MAX77802_REG_LDO23CTRL1 = 0x76,
|
||||
MAX77802_REG_LDO24CTRL1 = 0x77,
|
||||
MAX77802_REG_LDO25CTRL1 = 0x78,
|
||||
MAX77802_REG_LDO26CTRL1 = 0x79,
|
||||
MAX77802_REG_LDO27CTRL1 = 0x7A,
|
||||
MAX77802_REG_LDO28CTRL1 = 0x7B,
|
||||
MAX77802_REG_LDO29CTRL1 = 0x7C,
|
||||
MAX77802_REG_LDO30CTRL1 = 0x7D,
|
||||
/* Reserved: 0x7E */
|
||||
MAX77802_REG_LDO32CTRL1 = 0x7F,
|
||||
MAX77802_REG_LDO33CTRL1 = 0x80,
|
||||
MAX77802_REG_LDO34CTRL1 = 0x81,
|
||||
MAX77802_REG_LDO35CTRL1 = 0x82,
|
||||
/* Reserved: 0x83-0x8F */
|
||||
MAX77802_REG_LDO1CTRL2 = 0x90,
|
||||
MAX77802_REG_LDO2CTRL2 = 0x91,
|
||||
MAX77802_REG_LDO3CTRL2 = 0x92,
|
||||
MAX77802_REG_LDO4CTRL2 = 0x93,
|
||||
MAX77802_REG_LDO5CTRL2 = 0x94,
|
||||
MAX77802_REG_LDO6CTRL2 = 0x95,
|
||||
MAX77802_REG_LDO7CTRL2 = 0x96,
|
||||
MAX77802_REG_LDO8CTRL2 = 0x97,
|
||||
MAX77802_REG_LDO9CTRL2 = 0x98,
|
||||
MAX77802_REG_LDO10CTRL2 = 0x99,
|
||||
MAX77802_REG_LDO11CTRL2 = 0x9A,
|
||||
MAX77802_REG_LDO12CTRL2 = 0x9B,
|
||||
MAX77802_REG_LDO13CTRL2 = 0x9C,
|
||||
MAX77802_REG_LDO14CTRL2 = 0x9D,
|
||||
MAX77802_REG_LDO15CTRL2 = 0x9E,
|
||||
/* Reserved: 0x9F */
|
||||
MAX77802_REG_LDO17CTRL2 = 0xA0,
|
||||
MAX77802_REG_LDO18CTRL2 = 0xA1,
|
||||
MAX77802_REG_LDO19CTRL2 = 0xA2,
|
||||
MAX77802_REG_LDO20CTRL2 = 0xA3,
|
||||
MAX77802_REG_LDO21CTRL2 = 0xA4,
|
||||
MAX77802_REG_LDO22CTRL2 = 0xA5,
|
||||
MAX77802_REG_LDO23CTRL2 = 0xA6,
|
||||
MAX77802_REG_LDO24CTRL2 = 0xA7,
|
||||
MAX77802_REG_LDO25CTRL2 = 0xA8,
|
||||
MAX77802_REG_LDO26CTRL2 = 0xA9,
|
||||
MAX77802_REG_LDO27CTRL2 = 0xAA,
|
||||
MAX77802_REG_LDO28CTRL2 = 0xAB,
|
||||
MAX77802_REG_LDO29CTRL2 = 0xAC,
|
||||
MAX77802_REG_LDO30CTRL2 = 0xAD,
|
||||
/* Reserved: 0xAE */
|
||||
MAX77802_REG_LDO32CTRL2 = 0xAF,
|
||||
MAX77802_REG_LDO33CTRL2 = 0xB0,
|
||||
MAX77802_REG_LDO34CTRL2 = 0xB1,
|
||||
MAX77802_REG_LDO35CTRL2 = 0xB2,
|
||||
/* Reserved: 0xB3 */
|
||||
|
||||
MAX77802_REG_BBAT_CHG = 0xB4,
|
||||
MAX77802_REG_32KHZ = 0xB5,
|
||||
|
||||
MAX77802_REG_PMIC_END = 0xB6,
|
||||
};
|
||||
|
||||
enum max77802_rtc_reg {
|
||||
MAX77802_RTC_INT = 0xC0,
|
||||
MAX77802_RTC_INTM = 0xC1,
|
||||
MAX77802_RTC_CONTROLM = 0xC2,
|
||||
MAX77802_RTC_CONTROL = 0xC3,
|
||||
MAX77802_RTC_UPDATE0 = 0xC4,
|
||||
MAX77802_RTC_UPDATE1 = 0xC5,
|
||||
MAX77802_WTSR_SMPL_CNTL = 0xC6,
|
||||
MAX77802_RTC_SEC = 0xC7,
|
||||
MAX77802_RTC_MIN = 0xC8,
|
||||
MAX77802_RTC_HOUR = 0xC9,
|
||||
MAX77802_RTC_WEEKDAY = 0xCA,
|
||||
MAX77802_RTC_MONTH = 0xCB,
|
||||
MAX77802_RTC_YEAR = 0xCC,
|
||||
MAX77802_RTC_DATE = 0xCD,
|
||||
MAX77802_RTC_AE1 = 0xCE,
|
||||
MAX77802_ALARM1_SEC = 0xCF,
|
||||
MAX77802_ALARM1_MIN = 0xD0,
|
||||
MAX77802_ALARM1_HOUR = 0xD1,
|
||||
MAX77802_ALARM1_WEEKDAY = 0xD2,
|
||||
MAX77802_ALARM1_MONTH = 0xD3,
|
||||
MAX77802_ALARM1_YEAR = 0xD4,
|
||||
MAX77802_ALARM1_DATE = 0xD5,
|
||||
MAX77802_RTC_AE2 = 0xD6,
|
||||
MAX77802_ALARM2_SEC = 0xD7,
|
||||
MAX77802_ALARM2_MIN = 0xD8,
|
||||
MAX77802_ALARM2_HOUR = 0xD9,
|
||||
MAX77802_ALARM2_WEEKDAY = 0xDA,
|
||||
MAX77802_ALARM2_MONTH = 0xDB,
|
||||
MAX77802_ALARM2_YEAR = 0xDC,
|
||||
MAX77802_ALARM2_DATE = 0xDD,
|
||||
|
||||
MAX77802_RTC_END = 0xDF,
|
||||
};
|
||||
|
||||
enum max77686_irq_source {
|
||||
PMIC_INT1 = 0,
|
||||
@@ -205,30 +407,46 @@ enum max77686_irq {
|
||||
MAX77686_PMICIRQ_140C,
|
||||
MAX77686_PMICIRQ_120C,
|
||||
|
||||
MAX77686_RTCIRQ_RTC60S,
|
||||
MAX77686_RTCIRQ_RTC60S = 0,
|
||||
MAX77686_RTCIRQ_RTCA1,
|
||||
MAX77686_RTCIRQ_RTCA2,
|
||||
MAX77686_RTCIRQ_SMPL,
|
||||
MAX77686_RTCIRQ_RTC1S,
|
||||
MAX77686_RTCIRQ_WTSR,
|
||||
|
||||
MAX77686_IRQ_NR,
|
||||
};
|
||||
|
||||
#define MAX77686_INT1_PWRONF_MSK BIT(0)
|
||||
#define MAX77686_INT1_PWRONR_MSK BIT(1)
|
||||
#define MAX77686_INT1_JIGONBF_MSK BIT(2)
|
||||
#define MAX77686_INT1_JIGONBR_MSK BIT(3)
|
||||
#define MAX77686_INT1_ACOKBF_MSK BIT(4)
|
||||
#define MAX77686_INT1_ACOKBR_MSK BIT(5)
|
||||
#define MAX77686_INT1_ONKEY1S_MSK BIT(6)
|
||||
#define MAX77686_INT1_MRSTB_MSK BIT(7)
|
||||
|
||||
#define MAX77686_INT2_140C_MSK BIT(0)
|
||||
#define MAX77686_INT2_120C_MSK BIT(1)
|
||||
|
||||
#define MAX77686_RTCINT_RTC60S_MSK BIT(0)
|
||||
#define MAX77686_RTCINT_RTCA1_MSK BIT(1)
|
||||
#define MAX77686_RTCINT_RTCA2_MSK BIT(2)
|
||||
#define MAX77686_RTCINT_SMPL_MSK BIT(3)
|
||||
#define MAX77686_RTCINT_RTC1S_MSK BIT(4)
|
||||
#define MAX77686_RTCINT_WTSR_MSK BIT(5)
|
||||
|
||||
struct max77686_dev {
|
||||
struct device *dev;
|
||||
struct i2c_client *i2c; /* 0xcc / PMIC, Battery Control, and FLASH */
|
||||
struct i2c_client *rtc; /* slave addr 0x0c */
|
||||
|
||||
int type;
|
||||
unsigned long type;
|
||||
|
||||
struct regmap *regmap; /* regmap for mfd */
|
||||
struct regmap *rtc_regmap; /* regmap for rtc */
|
||||
|
||||
struct irq_domain *irq_domain;
|
||||
struct regmap_irq_chip_data *irq_data;
|
||||
struct regmap_irq_chip_data *rtc_irq_data;
|
||||
|
||||
int irq;
|
||||
int irq_gpio;
|
||||
bool wakeup;
|
||||
struct mutex irqlock;
|
||||
int irq_masks_cur[MAX77686_IRQ_GROUP_NR];
|
||||
@@ -237,6 +455,7 @@ struct max77686_dev {
|
||||
|
||||
enum max77686_types {
|
||||
TYPE_MAX77686,
|
||||
TYPE_MAX77802,
|
||||
};
|
||||
|
||||
extern int max77686_irq_init(struct max77686_dev *max77686);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* max77686.h - Driver for the Maxim 77686
|
||||
* max77686.h - Driver for the Maxim 77686/802
|
||||
*
|
||||
* Copyright (C) 2012 Samsung Electrnoics
|
||||
* Chiwoong Byun <woong.byun@samsung.com>
|
||||
@@ -71,6 +71,54 @@ enum max77686_regulators {
|
||||
MAX77686_REG_MAX,
|
||||
};
|
||||
|
||||
/* MAX77802 regulator IDs */
|
||||
enum max77802_regulators {
|
||||
MAX77802_BUCK1 = 0,
|
||||
MAX77802_BUCK2,
|
||||
MAX77802_BUCK3,
|
||||
MAX77802_BUCK4,
|
||||
MAX77802_BUCK5,
|
||||
MAX77802_BUCK6,
|
||||
MAX77802_BUCK7,
|
||||
MAX77802_BUCK8,
|
||||
MAX77802_BUCK9,
|
||||
MAX77802_BUCK10,
|
||||
MAX77802_LDO1,
|
||||
MAX77802_LDO2,
|
||||
MAX77802_LDO3,
|
||||
MAX77802_LDO4,
|
||||
MAX77802_LDO5,
|
||||
MAX77802_LDO6,
|
||||
MAX77802_LDO7,
|
||||
MAX77802_LDO8,
|
||||
MAX77802_LDO9,
|
||||
MAX77802_LDO10,
|
||||
MAX77802_LDO11,
|
||||
MAX77802_LDO12,
|
||||
MAX77802_LDO13,
|
||||
MAX77802_LDO14,
|
||||
MAX77802_LDO15,
|
||||
MAX77802_LDO17,
|
||||
MAX77802_LDO18,
|
||||
MAX77802_LDO19,
|
||||
MAX77802_LDO20,
|
||||
MAX77802_LDO21,
|
||||
MAX77802_LDO23,
|
||||
MAX77802_LDO24,
|
||||
MAX77802_LDO25,
|
||||
MAX77802_LDO26,
|
||||
MAX77802_LDO27,
|
||||
MAX77802_LDO28,
|
||||
MAX77802_LDO29,
|
||||
MAX77802_LDO30,
|
||||
MAX77802_LDO32,
|
||||
MAX77802_LDO33,
|
||||
MAX77802_LDO34,
|
||||
MAX77802_LDO35,
|
||||
|
||||
MAX77802_REG_MAX,
|
||||
};
|
||||
|
||||
struct max77686_regulator_data {
|
||||
int id;
|
||||
struct regulator_init_data *initdata;
|
||||
@@ -83,14 +131,19 @@ enum max77686_opmode {
|
||||
MAX77686_OPMODE_STANDBY,
|
||||
};
|
||||
|
||||
enum max77802_opmode {
|
||||
MAX77802_OPMODE_OFF,
|
||||
MAX77802_OPMODE_STANDBY,
|
||||
MAX77802_OPMODE_LP,
|
||||
MAX77802_OPMODE_NORMAL,
|
||||
};
|
||||
|
||||
struct max77686_opmode_data {
|
||||
int id;
|
||||
int mode;
|
||||
};
|
||||
|
||||
struct max77686_platform_data {
|
||||
/* IRQ */
|
||||
int irq_gpio;
|
||||
int ono;
|
||||
int wakeup;
|
||||
|
||||
|
||||
@@ -86,6 +86,5 @@
|
||||
#define MC13783_IRQ_HSL 43
|
||||
#define MC13783_IRQ_ALSPTH 44
|
||||
#define MC13783_IRQ_AHSSHORT 45
|
||||
#define MC13783_NUM_IRQ MC13XXX_NUM_IRQ
|
||||
|
||||
#endif /* ifndef __LINUX_MFD_MC13783_H */
|
||||
|
||||
@@ -23,15 +23,10 @@ int mc13xxx_reg_rmw(struct mc13xxx *mc13xxx, unsigned int offset,
|
||||
|
||||
int mc13xxx_irq_request(struct mc13xxx *mc13xxx, int irq,
|
||||
irq_handler_t handler, const char *name, void *dev);
|
||||
int mc13xxx_irq_request_nounmask(struct mc13xxx *mc13xxx, int irq,
|
||||
irq_handler_t handler, const char *name, void *dev);
|
||||
int mc13xxx_irq_free(struct mc13xxx *mc13xxx, int irq, void *dev);
|
||||
|
||||
int mc13xxx_irq_mask(struct mc13xxx *mc13xxx, int irq);
|
||||
int mc13xxx_irq_unmask(struct mc13xxx *mc13xxx, int irq);
|
||||
int mc13xxx_irq_status(struct mc13xxx *mc13xxx, int irq,
|
||||
int *enabled, int *pending);
|
||||
int mc13xxx_irq_ack(struct mc13xxx *mc13xxx, int irq);
|
||||
|
||||
int mc13xxx_get_flags(struct mc13xxx *mc13xxx);
|
||||
|
||||
@@ -39,6 +34,22 @@ int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx,
|
||||
unsigned int mode, unsigned int channel,
|
||||
u8 ato, bool atox, unsigned int *sample);
|
||||
|
||||
/* Deprecated calls */
|
||||
static inline int mc13xxx_irq_ack(struct mc13xxx *mc13xxx, int irq)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int mc13xxx_irq_request_nounmask(struct mc13xxx *mc13xxx, int irq,
|
||||
irq_handler_t handler,
|
||||
const char *name, void *dev)
|
||||
{
|
||||
return mc13xxx_irq_request(mc13xxx, irq, handler, name, dev);
|
||||
}
|
||||
|
||||
int mc13xxx_irq_mask(struct mc13xxx *mc13xxx, int irq);
|
||||
int mc13xxx_irq_unmask(struct mc13xxx *mc13xxx, int irq);
|
||||
|
||||
#define MC13783_AUDIO_RX0 36
|
||||
#define MC13783_AUDIO_RX1 37
|
||||
#define MC13783_AUDIO_TX 38
|
||||
@@ -68,8 +79,6 @@ int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx,
|
||||
#define MC13XXX_IRQ_THWARNH 37
|
||||
#define MC13XXX_IRQ_CLK 38
|
||||
|
||||
#define MC13XXX_NUM_IRQ 46
|
||||
|
||||
struct regulator_init_data;
|
||||
|
||||
struct mc13xxx_regulator_init_data {
|
||||
|
||||
@@ -943,6 +943,12 @@ void rtsx_pci_send_cmd_no_wait(struct rtsx_pcr *pcr);
|
||||
int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout);
|
||||
int rtsx_pci_transfer_data(struct rtsx_pcr *pcr, struct scatterlist *sglist,
|
||||
int num_sg, bool read, int timeout);
|
||||
int rtsx_pci_dma_map_sg(struct rtsx_pcr *pcr, struct scatterlist *sglist,
|
||||
int num_sg, bool read);
|
||||
void rtsx_pci_dma_unmap_sg(struct rtsx_pcr *pcr, struct scatterlist *sglist,
|
||||
int num_sg, bool read);
|
||||
int rtsx_pci_dma_transfer(struct rtsx_pcr *pcr, struct scatterlist *sglist,
|
||||
int count, bool read, int timeout);
|
||||
int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len);
|
||||
int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len);
|
||||
int rtsx_pci_card_pull_ctl_enable(struct rtsx_pcr *pcr, int card);
|
||||
|
||||
@@ -21,6 +21,7 @@ enum sec_device_type {
|
||||
S2MPA01,
|
||||
S2MPS11X,
|
||||
S2MPS14X,
|
||||
S2MPU02,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -129,6 +129,30 @@ enum s2mps14_irq {
|
||||
S2MPS14_IRQ_NR,
|
||||
};
|
||||
|
||||
enum s2mpu02_irq {
|
||||
S2MPU02_IRQ_PWRONF,
|
||||
S2MPU02_IRQ_PWRONR,
|
||||
S2MPU02_IRQ_JIGONBF,
|
||||
S2MPU02_IRQ_JIGONBR,
|
||||
S2MPU02_IRQ_ACOKBF,
|
||||
S2MPU02_IRQ_ACOKBR,
|
||||
S2MPU02_IRQ_PWRON1S,
|
||||
S2MPU02_IRQ_MRB,
|
||||
|
||||
S2MPU02_IRQ_RTC60S,
|
||||
S2MPU02_IRQ_RTCA1,
|
||||
S2MPU02_IRQ_RTCA0,
|
||||
S2MPU02_IRQ_SMPL,
|
||||
S2MPU02_IRQ_RTC1S,
|
||||
S2MPU02_IRQ_WTSR,
|
||||
|
||||
S2MPU02_IRQ_INT120C,
|
||||
S2MPU02_IRQ_INT140C,
|
||||
S2MPU02_IRQ_TSD,
|
||||
|
||||
S2MPU02_IRQ_NR,
|
||||
};
|
||||
|
||||
/* Masks for interrupts are the same as in s2mps11 */
|
||||
#define S2MPS14_IRQ_TSD_MASK (1 << 2)
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user