Merge changes Iee6305ee,I0dc64d88,I06ece3fb into msm-3.0
* changes:
msm: qdss: enable qdss support for 8064
msm: qdss: switch to using qdss apis in the etm driver
msm: qdss: add support for qdss_get/put and qdss_enable/disable
diff --git a/arch/arm/include/asm/hardware/gic.h b/arch/arm/include/asm/hardware/gic.h
index 5bb5139..5668e75 100644
--- a/arch/arm/include/asm/hardware/gic.h
+++ b/arch/arm/include/asm/hardware/gic.h
@@ -50,8 +50,11 @@
void gic_enable_ppi(unsigned int);
bool gic_is_spi_pending(unsigned int irq);
void gic_clear_spi_pending(unsigned int irq);
+#ifdef CONFIG_ARM_GIC
void gic_set_irq_secure(unsigned int irq);
-
+#else
+static inline void gic_set_irq_secure(unsigned int irq) { }
+#endif
static inline void gic_init(unsigned int nr, int start,
void __iomem *dist , void __iomem *cpu)
{
diff --git a/arch/arm/mach-msm/devices-msm8x60.c b/arch/arm/mach-msm/devices-msm8x60.c
index 3ad3ee4..ba7ac2a 100644
--- a/arch/arm/mach-msm/devices-msm8x60.c
+++ b/arch/arm/mach-msm/devices-msm8x60.c
@@ -331,6 +331,7 @@
.config_gpio = 1,
.uart_tx_gpio = 67,
.uart_rx_gpio = 66,
+ .line = 1,
};
static struct resource msm_uart_gsbi9_resources[] = {
diff --git a/arch/arm/mach-msm/include/mach/msm_serial_hs_lite.h b/arch/arm/mach-msm/include/mach/msm_serial_hs_lite.h
index e2bdaea..577a097 100644
--- a/arch/arm/mach-msm/include/mach/msm_serial_hs_lite.h
+++ b/arch/arm/mach-msm/include/mach/msm_serial_hs_lite.h
@@ -18,6 +18,7 @@
unsigned config_gpio;
unsigned uart_tx_gpio;
unsigned uart_rx_gpio;
+ int line;
};
#endif
diff --git a/arch/arm/mach-msm/memory.c b/arch/arm/mach-msm/memory.c
index d26d76b..8dbf304 100644
--- a/arch/arm/mach-msm/memory.c
+++ b/arch/arm/mach-msm/memory.c
@@ -146,7 +146,7 @@
flush_axi_bus_buffer();
}
-void *alloc_bootmem_aligned(unsigned long size, unsigned long alignment)
+void * __init alloc_bootmem_aligned(unsigned long size, unsigned long alignment)
{
void *unused_addr = NULL;
unsigned long addr, tmp_size, unused_size;
diff --git a/drivers/gpu/msm/kgsl_sharedmem.c b/drivers/gpu/msm/kgsl_sharedmem.c
index d083702..5634a19 100644
--- a/drivers/gpu/msm/kgsl_sharedmem.c
+++ b/drivers/gpu/msm/kgsl_sharedmem.c
@@ -443,7 +443,7 @@
sg_set_page(&memdesc->sg[i], page, PAGE_SIZE, 0);
}
- kgsl_cache_range_op(memdesc, KGSL_CACHE_OP_INV);
+ kgsl_cache_range_op(memdesc, KGSL_CACHE_OP_FLUSH);
ret = kgsl_mmu_map(pagetable, memdesc, protflags);
diff --git a/drivers/of/of_spmi.c b/drivers/of/of_spmi.c
index 112497c..61085c9 100644
--- a/drivers/of/of_spmi.c
+++ b/drivers/of/of_spmi.c
@@ -203,9 +203,18 @@
struct device_node *node;
int rc, i, num_dev_node = 0;
- /* first count the total number of device_nodes */
- for_each_child_of_node(container, node)
+ if (!of_device_is_available(container))
+ return;
+
+ /*
+ * Count the total number of device_nodes so we know how much
+ * device_store to allocate.
+ */
+ for_each_child_of_node(container, node) {
+ if (!of_device_is_available(node))
+ continue;
num_dev_node++;
+ }
rc = of_spmi_alloc_device_store(d_info, num_dev_node);
if (rc) {
@@ -214,9 +223,10 @@
return;
}
- /* allocate resources per device_node */
i = 0;
for_each_child_of_node(container, node) {
+ if (!of_device_is_available(node))
+ continue;
of_spmi_init_resource(&r_info, node);
of_spmi_sum_node_resources(&r_info, 1);
rc = of_spmi_allocate_node_resources(d_info, &r_info, i);
@@ -226,17 +236,6 @@
of_spmi_free_device_resources(d_info);
return;
}
- i++;
- }
-
- /**
- * Now we need to cycle through again and actually populate
- * the resources for each node.
- */
- i = 0;
- for_each_child_of_node(container, node) {
- of_spmi_init_resource(&r_info, node);
- of_spmi_sum_node_resources(&r_info, 1);
of_spmi_populate_node_resources(d_info, &r_info, i);
i++;
}
@@ -265,6 +264,9 @@
for_each_child_of_node(container, node) {
struct of_spmi_res_info r_info;
+ if (!of_device_is_available(node))
+ continue;
+
/**
* Check to see if this node contains children which
* should be all created as the same spmi_device.
@@ -365,6 +367,9 @@
continue;
}
+ if (!of_device_is_available(node))
+ continue;
+
rc = of_spmi_alloc_device_store(&d_info, 1);
if (rc) {
dev_err(&ctrl->dev, "%s: unable to allocate"
diff --git a/drivers/tty/serial/msm_serial_hs_lite.c b/drivers/tty/serial/msm_serial_hs_lite.c
index 9a8d552..285d1de 100644
--- a/drivers/tty/serial/msm_serial_hs_lite.c
+++ b/drivers/tty/serial/msm_serial_hs_lite.c
@@ -141,6 +141,16 @@
return UART_TO_MSM(port)->is_uartdm;
}
+static int get_line(struct platform_device *pdev)
+{
+ const struct msm_serial_hslite_platform_data *pdata =
+ pdev->dev.platform_data;
+ if (pdata)
+ return pdata->line;
+
+ return pdev->id;
+}
+
static int clk_en(struct uart_port *port, int enable)
{
struct msm_hsl_port *msm_hsl_port = UART_TO_MSM(port);
@@ -1243,7 +1253,7 @@
struct uart_port *port;
struct platform_device *pdev = to_platform_device(dev);
- port = get_port_from_line(pdev->id);
+ port = get_port_from_line(get_line(pdev));
enable = get_console_state(port);
@@ -1264,7 +1274,7 @@
struct uart_port *port;
struct platform_device *pdev = to_platform_device(dev);
- port = get_port_from_line(pdev->id);
+ port = get_port_from_line(get_line(pdev));
cur_state = get_console_state(port);
enable = buf[0] - '0';
@@ -1332,12 +1342,12 @@
if (pdev->id == -1)
pdev->id = atomic_inc_return(&msm_serial_hsl_next_id) - 1;
- if (unlikely(pdev->id < 0 || pdev->id >= UART_NR))
+ if (unlikely(get_line(pdev) < 0 || get_line(pdev) >= UART_NR))
return -ENXIO;
printk(KERN_INFO "msm_serial_hsl: detected port #%d\n", pdev->id);
- port = get_port_from_line(pdev->id);
+ port = get_port_from_line(get_line(pdev));
port->dev = &pdev->dev;
msm_hsl_port = UART_TO_MSM(port);
@@ -1395,7 +1405,7 @@
if (unlikely(ret))
pr_err("%s():Can't create console attribute\n", __func__);
#endif
- msm_hsl_debugfs_init(msm_hsl_port, pdev->id);
+ msm_hsl_debugfs_init(msm_hsl_port, get_line(pdev));
/* Temporarily increase the refcount on the GSBI clock to avoid a race
* condition with the earlyprintk handover mechanism.
@@ -1413,7 +1423,7 @@
struct msm_hsl_port *msm_hsl_port = platform_get_drvdata(pdev);
struct uart_port *port;
- port = get_port_from_line(pdev->id);
+ port = get_port_from_line(get_line(pdev));
#ifdef CONFIG_SERIAL_MSM_HSL_CONSOLE
device_remove_file(&pdev->dev, &dev_attr_console);
#endif
@@ -1436,7 +1446,7 @@
{
struct platform_device *pdev = to_platform_device(dev);
struct uart_port *port;
- port = get_port_from_line(pdev->id);
+ port = get_port_from_line(get_line(pdev));
if (port) {
@@ -1455,7 +1465,7 @@
{
struct platform_device *pdev = to_platform_device(dev);
struct uart_port *port;
- port = get_port_from_line(pdev->id);
+ port = get_port_from_line(get_line(pdev));
if (port) {
@@ -1478,7 +1488,7 @@
{
struct platform_device *pdev = to_platform_device(dev);
struct uart_port *port;
- port = get_port_from_line(pdev->id);
+ port = get_port_from_line(get_line(pdev));
dev_dbg(dev, "pm_runtime: suspending\n");
msm_hsl_deinit_clock(port);
@@ -1489,7 +1499,7 @@
{
struct platform_device *pdev = to_platform_device(dev);
struct uart_port *port;
- port = get_port_from_line(pdev->id);
+ port = get_port_from_line(get_line(pdev));
dev_dbg(dev, "pm_runtime: resuming\n");
msm_hsl_init_clock(port);
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 739b04c..47b6d4d 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -5465,7 +5465,9 @@
} else if ((pi->amp_move_state !=
L2CAP_AMP_STATE_WAIT_MOVE_RSP_SUCCESS) &&
(pi->amp_move_state !=
- L2CAP_AMP_STATE_WAIT_MOVE_CONFIRM)) {
+ L2CAP_AMP_STATE_WAIT_MOVE_CONFIRM) &&
+ (pi->amp_move_state !=
+ L2CAP_AMP_STATE_WAIT_MOVE_CONFIRM_RSP)) {
/* Move was not in expected state, free the channel */
ampchan = pi->ampchan;
ampcon = pi->ampcon;
diff --git a/sound/soc/codecs/wcd9310.c b/sound/soc/codecs/wcd9310.c
index 2c43792..74e2dc0 100644
--- a/sound/soc/codecs/wcd9310.c
+++ b/sound/soc/codecs/wcd9310.c
@@ -3591,6 +3591,7 @@
ret = wcd9xxx_close_slim_sch_rx(tabla,
tabla_p->dai[j].ch_num,
tabla_p->dai[j].ch_tot);
+ usleep_range(5000, 5000);
tabla_p->dai[j].rate = 0;
memset(tabla_p->dai[j].ch_num, 0, (sizeof(u32)*
tabla_p->dai[j].ch_tot));