Merge "ARM: dts: msm: Add the external micbias for msm8x10 AMIC3"
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
index 6bbe966..e0376d1 100644
--- a/arch/arm/include/asm/pgtable.h
+++ b/arch/arm/include/asm/pgtable.h
@@ -101,7 +101,7 @@
__pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE)
#define pgprot_stronglyordered(prot) \
- __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_UNCACHED)
+ __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_UNCACHED | L_PTE_XN)
#define pgprot_device(prot) \
__pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_DEV_NONSHARED)
diff --git a/arch/arm/mach-msm/scm-pas.c b/arch/arm/mach-msm/scm-pas.c
index 57acdc4..c3e0752 100644
--- a/arch/arm/mach-msm/scm-pas.c
+++ b/arch/arm/mach-msm/scm-pas.c
@@ -16,6 +16,7 @@
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/clk.h>
+#include <linux/dma-mapping.h>
#include <asm/cacheflush.h>
@@ -138,28 +139,30 @@
} request;
u32 scm_ret = 0;
void *mdata_buf;
+ dma_addr_t mdata_phys;
+ DEFINE_DMA_ATTRS(attrs);
ret = scm_pas_enable_bw();
if (ret)
return ret;
- /* Make memory physically contiguous */
- mdata_buf = kmemdup(metadata, size, GFP_KERNEL);
-
- if (!mdata_buf)
+ dma_set_attr(DMA_ATTR_STRONGLY_ORDERED, &attrs);
+ mdata_buf = dma_alloc_attrs(NULL, size, &mdata_phys, GFP_KERNEL,
+ &attrs);
+ if (!mdata_buf) {
+ pr_err("Allocation for metadata failed.\n");
return -ENOMEM;
+ }
+
+ memcpy(mdata_buf, metadata, size);
request.proc = id;
- request.image_addr = virt_to_phys(mdata_buf);
-
- /* Flush metadata to ensure secure world doesn't read stale data */
- __cpuc_flush_dcache_area(mdata_buf, size);
- outer_flush_range(request.image_addr, request.image_addr + size);
+ request.image_addr = mdata_phys;
ret = scm_call(SCM_SVC_PIL, PAS_INIT_IMAGE_CMD, &request,
sizeof(request), &scm_ret, sizeof(scm_ret));
- kfree(mdata_buf);
+ dma_free_attrs(NULL, size, mdata_buf, mdata_phys, &attrs);
scm_pas_disable_bw();
if (ret)
diff --git a/drivers/input/touchscreen/synaptics_fw_update.c b/drivers/input/touchscreen/synaptics_fw_update.c
index 385947f..9f326f1 100644
--- a/drivers/input/touchscreen/synaptics_fw_update.c
+++ b/drivers/input/touchscreen/synaptics_fw_update.c
@@ -2054,7 +2054,7 @@
__ATTR(writeconfig, S_IRUGO | S_IWUSR | S_IWGRP,
synaptics_rmi4_show_error,
fwu_sysfs_write_config_store),
- __ATTR(writelockdown, S_IWUGO,
+ __ATTR(writelockdown, S_IRUGO | S_IWUSR | S_IWGRP,
synaptics_rmi4_show_error,
fwu_sysfs_write_lockdown_store),
__ATTR(readconfig, S_IRUGO | S_IWUSR | S_IWGRP,
diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c
index 3d29607..81bc0f0 100644
--- a/drivers/tty/tty_buffer.c
+++ b/drivers/tty/tty_buffer.c
@@ -474,11 +474,6 @@
tty_buffer_free(tty, head);
continue;
}
- /* Ldisc or user is trying to flush the buffers
- we are feeding to the ldisc, stop feeding the
- line discipline as we want to empty the queue */
- if (test_bit(TTY_FLUSHPENDING, &tty->flags))
- break;
/* update receive room */
spin_lock(&tty->read_lock);
@@ -513,17 +508,19 @@
disc->ops->receive_buf(tty, char_buf,
flag_buf, count);
spin_lock_irqsave(&tty->buf.lock, flags);
+ /* Ldisc or user is trying to flush the buffers.
+ We may have a deferred request to flush the
+ input buffer, if so pull the chain under the lock
+ and empty the queue */
+ if (test_bit(TTY_FLUSHPENDING, &tty->flags)) {
+ __tty_buffer_flush(tty);
+ clear_bit(TTY_FLUSHPENDING, &tty->flags);
+ wake_up(&tty->read_wait);
+ break;
+ }
}
clear_bit(TTY_FLUSHING, &tty->flags);
}
-
- /* We may have a deferred request to flush the input buffer,
- if so pull the chain under the lock and empty the queue */
- if (test_bit(TTY_FLUSHPENDING, &tty->flags)) {
- __tty_buffer_flush(tty);
- clear_bit(TTY_FLUSHPENDING, &tty->flags);
- wake_up(&tty->read_wait);
- }
spin_unlock_irqrestore(&tty->buf.lock, flags);
tty_ldisc_deref(disc);
diff --git a/drivers/video/msm/mdss/mdss_mdp.c b/drivers/video/msm/mdss/mdss_mdp.c
index 8924298..b2e1cac 100644
--- a/drivers/video/msm/mdss/mdss_mdp.c
+++ b/drivers/video/msm/mdss/mdss_mdp.c
@@ -896,6 +896,10 @@
mdata->mdp_rev = MDSS_MDP_REG_READ(MDSS_MDP_REG_HW_VERSION);
pr_info_once("MDP Rev=%x\n", mdata->mdp_rev);
+ /* disable hw underrun recovery */
+ writel_relaxed(0x0, mdata->mdp_base +
+ MDSS_MDP_REG_VIDEO_INTF_UNDERFLOW_CTL);
+
if (mdata->hw_settings) {
struct mdss_hw_settings *hws = mdata->hw_settings;
diff --git a/drivers/video/msm/mdss/mdss_mdp_formats.h b/drivers/video/msm/mdss/mdss_mdp_formats.h
index f5da8e6..a2edf90 100644
--- a/drivers/video/msm/mdss/mdss_mdp_formats.h
+++ b/drivers/video/msm/mdss/mdss_mdp_formats.h
@@ -165,5 +165,14 @@
.bpp = 2,
.element = { C1_B_Cb, C0_G_Y, C2_R_Cr, C0_G_Y },
},
+ {
+ FMT_YUV_COMMON(MDP_YCBYCR_H2V1),
+ .fetch_planes = MDSS_MDP_PLANE_INTERLEAVED,
+ .chroma_sample = MDSS_MDP_CHROMA_H2V1,
+ .unpack_count = 4,
+ .bpp = 2,
+ .element = { C2_R_Cr, C0_G_Y, C1_B_Cb, C0_G_Y },
+ },
+
};
#endif
diff --git a/drivers/video/msm/mdss/mdss_mdp_hwio.h b/drivers/video/msm/mdss/mdss_mdp_hwio.h
index ccd6e56..213368a 100644
--- a/drivers/video/msm/mdss/mdss_mdp_hwio.h
+++ b/drivers/video/msm/mdss/mdss_mdp_hwio.h
@@ -43,6 +43,7 @@
#define MDSS_MDP_REG_HIST_INTR_STATUS 0x00120
#define MDSS_MDP_REG_HIST_INTR_CLEAR 0x00124
+#define MDSS_MDP_REG_VIDEO_INTF_UNDERFLOW_CTL 0x003E0
#define MDSS_MDP_REG_SPLIT_DISPLAY_EN 0x003F4
#define MDSS_MDP_REG_SPLIT_DISPLAY_UPPER_PIPE_CTRL 0x003F8
#define MDSS_MDP_REG_SPLIT_DISPLAY_LOWER_PIPE_CTRL 0x004F0
diff --git a/drivers/video/msm/mdss/mdss_mdp_overlay.c b/drivers/video/msm/mdss/mdss_mdp_overlay.c
index 22d2d2a..55889da 100644
--- a/drivers/video/msm/mdss/mdss_mdp_overlay.c
+++ b/drivers/video/msm/mdss/mdss_mdp_overlay.c
@@ -501,7 +501,7 @@
BLEND_OP_OPAQUE;
if (!fmt->alpha_enable && (pipe->blend_op != BLEND_OP_OPAQUE))
- pr_warn("Unintended blend_op %d on layer with no alpha plane\n",
+ pr_debug("Unintended blend_op %d on layer with no alpha plane\n",
pipe->blend_op);
pipe->overfetch_disable = fmt->is_yuv &&
diff --git a/include/linux/msm_mdp.h b/include/linux/msm_mdp.h
index 73b8014..baa9d6c 100644
--- a/include/linux/msm_mdp.h
+++ b/include/linux/msm_mdp.h
@@ -134,6 +134,7 @@
MDP_XRGB_8888_TILE, /* XRGB 8888 in tile format */
MDP_XBGR_8888_TILE, /* XBGR 8888 in tile format */
MDP_BGRX_8888_TILE, /* BGRX 8888 in tile format */
+ MDP_YCBYCR_H2V1, /* YCbYCr interleave */
MDP_IMGTYPE_LIMIT,
MDP_RGB_BORDERFILL, /* border fill pipe */
MDP_FB_FORMAT = MDP_IMGTYPE2_START, /* framebuffer format */
diff --git a/include/net/sock.h b/include/net/sock.h
index 5a0a58a..83e98f6 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -162,6 +162,7 @@
volatile unsigned char skc_state;
unsigned char skc_reuse;
int skc_bound_dev_if;
+ int padding[2];
union {
struct hlist_node skc_bind_node;
struct hlist_nulls_node skc_portaddr_node;