aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPraneeth Bajjuri2014-02-21 15:53:14 -0600
committerPraneeth Bajjuri2014-02-21 15:53:14 -0600
commite8e54eaa2c8109fc871c387dd198963c416a1af1 (patch)
tree169c5ef41b3a1426a3dfc4fe81c1b3b1cd4f9844
parent4bb7edcae4e3538685ac07f014d03d131d065e29 (diff)
parent5c27a8c02babddc1c675ce0f76c556b724970df5 (diff)
downloadkernel-omap-p-ti-linux-3.8.y-bringup.tar.gz
kernel-omap-p-ti-linux-3.8.y-bringup.tar.xz
kernel-omap-p-ti-linux-3.8.y-bringup.zip
Merge branch 'ti2013.04.02-rpmsg-3.8.y' of git://git.ti.com/rpmsg/rpmsg into p-ti-linux-3.8.yp-ti-linux-3.8.y-bringup
* 'ti2013.04.02-rpmsg-3.8.y' of git://git.ti.com/rpmsg/rpmsg: rpmsg: rpc: cleanup the dma-buf idr completely at filp release ARM: DRA7: hwmod_data: correct main clk for IPU1 ARM: DRA7: hwmod data: add bus-error back flag to ipu iommu attrs ARM: OMAP5: hwmod data: add bus-error back flag to ipu iommu attrs ARM: OMAP4: hwmod data: add bus-error back flag to ipu iommu attrs iommu/omap: enable bus-error back on supported iommus ARM: DRA7: clock: source IPU1 functional clock from CORE DPLL ARM: DRA7: hwmod_data: correct main clk for IPU1 MMU Change-Id: Ifa4d8f7f43aede1baae1aa3adf434db9d7955e87 Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
-rw-r--r--arch/arm/mach-omap2/cclock7xx_data.c1
-rw-r--r--arch/arm/mach-omap2/omap-iommu.c1
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c1
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_54xx_data.c1
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_7xx_data.c5
-rw-r--r--drivers/iommu/omap-iommu.h3
-rw-r--r--drivers/iommu/omap-iommu2.c3
-rw-r--r--drivers/rpmsg/rpmsg_rpc.c2
-rw-r--r--include/linux/platform_data/iommu-omap.h4
9 files changed, 19 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/cclock7xx_data.c b/arch/arm/mach-omap2/cclock7xx_data.c
index 57347f8ba432..308bd669268e 100644
--- a/arch/arm/mach-omap2/cclock7xx_data.c
+++ b/arch/arm/mach-omap2/cclock7xx_data.c
@@ -2133,6 +2133,7 @@ static const char *enable_init_clks[] = {
2133 2133
2134static struct reparent_init_clks reparent_clks[] = { 2134static struct reparent_init_clks reparent_clks[] = {
2135 { .name = "abe_dpll_sys_clk_mux", .parent = "sys_clkin2" }, 2135 { .name = "abe_dpll_sys_clk_mux", .parent = "sys_clkin2" },
2136 { .name = "ipu1_gfclk_mux", .parent = "dpll_core_h22x2_ck" },
2136}; 2137};
2137 2138
2138static struct rate_init_clks rate_clks[] = { 2139static struct rate_init_clks rate_clks[] = {
diff --git a/arch/arm/mach-omap2/omap-iommu.c b/arch/arm/mach-omap2/omap-iommu.c
index 6da4f7ae9d7f..7db763c0f66f 100644
--- a/arch/arm/mach-omap2/omap-iommu.c
+++ b/arch/arm/mach-omap2/omap-iommu.c
@@ -34,6 +34,7 @@ static int __init omap_iommu_dev_init(struct omap_hwmod *oh, void *unused)
34 pdata->nr_tlb_entries = a->nr_tlb_entries; 34 pdata->nr_tlb_entries = a->nr_tlb_entries;
35 pdata->da_start = a->da_start; 35 pdata->da_start = a->da_start;
36 pdata->da_end = a->da_end; 36 pdata->da_end = a->da_end;
37 pdata->has_bus_err_back = a->has_bus_err_back;
37 38
38 if (oh->rst_lines_cnt == 1) { 39 if (oh->rst_lines_cnt == 1) {
39 pdata->reset_name = oh->rst_lines->name; 40 pdata->reset_name = oh->rst_lines->name;
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index e19eeaba3597..c9143562ba65 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -2529,6 +2529,7 @@ static struct omap_mmu_dev_attr mmu_ipu_dev_attr = {
2529 .da_start = 0x0, 2529 .da_start = 0x0,
2530 .da_end = 0xfffff000, 2530 .da_end = 0xfffff000,
2531 .nr_tlb_entries = 32, 2531 .nr_tlb_entries = 32,
2532 .has_bus_err_back = 1,
2532}; 2533};
2533 2534
2534static struct omap_hwmod omap44xx_mmu_ipu_hwmod; 2535static struct omap_hwmod omap44xx_mmu_ipu_hwmod;
diff --git a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
index 9e752b361f32..e72d91183ab4 100644
--- a/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_54xx_data.c
@@ -2583,6 +2583,7 @@ static struct omap_mmu_dev_attr omap54xx_mmu_ipu_dev_attr = {
2583 .da_start = 0x0, 2583 .da_start = 0x0,
2584 .da_end = 0xfffff000, 2584 .da_end = 0xfffff000,
2585 .nr_tlb_entries = 32, 2585 .nr_tlb_entries = 32,
2586 .has_bus_err_back = 1,
2586}; 2587};
2587 2588
2588static struct omap_hwmod_irq_info omap54xx_mmu_ipu_irqs[] = { 2589static struct omap_hwmod_irq_info omap54xx_mmu_ipu_irqs[] = {
diff --git a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
index 461a30ca7b02..197e770cbac5 100644
--- a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c
@@ -1451,7 +1451,7 @@ static struct omap_hwmod dra7xx_ipu1_hwmod = {
1451 .clkdm_name = "ipu1_clkdm", 1451 .clkdm_name = "ipu1_clkdm",
1452 .rst_lines = dra7xx_ipu_resets, 1452 .rst_lines = dra7xx_ipu_resets,
1453 .rst_lines_cnt = ARRAY_SIZE(dra7xx_ipu_resets), 1453 .rst_lines_cnt = ARRAY_SIZE(dra7xx_ipu_resets),
1454 .main_clk = "dpll_core_h22x2_ck", 1454 .main_clk = "ipu1_gfclk_mux",
1455 .prcm = { 1455 .prcm = {
1456 .omap4 = { 1456 .omap4 = {
1457 .clkctrl_offs = DRA7XX_CM_IPU1_IPU1_CLKCTRL_OFFSET, 1457 .clkctrl_offs = DRA7XX_CM_IPU1_IPU1_CLKCTRL_OFFSET,
@@ -2201,6 +2201,7 @@ static struct omap_mmu_dev_attr dra7xx_mmu_ipu_dev_attr = {
2201 .da_start = 0x0, 2201 .da_start = 0x0,
2202 .da_end = 0xfffff000, 2202 .da_end = 0xfffff000,
2203 .nr_tlb_entries = 32, 2203 .nr_tlb_entries = 32,
2204 .has_bus_err_back = 1,
2204}; 2205};
2205 2206
2206static struct omap_hwmod_rst_info dra7xx_mmu_ipu_resets[] = { 2207static struct omap_hwmod_rst_info dra7xx_mmu_ipu_resets[] = {
@@ -2220,7 +2221,7 @@ static struct omap_hwmod dra7xx_mmu_ipu1_hwmod = {
2220 .mpu_irqs = dra7xx_mmu_ipu1_irqs, 2221 .mpu_irqs = dra7xx_mmu_ipu1_irqs,
2221 .rst_lines = dra7xx_mmu_ipu_resets, 2222 .rst_lines = dra7xx_mmu_ipu_resets,
2222 .rst_lines_cnt = ARRAY_SIZE(dra7xx_mmu_ipu_resets), 2223 .rst_lines_cnt = ARRAY_SIZE(dra7xx_mmu_ipu_resets),
2223 .main_clk = "dpll_core_h22x2_ck", 2224 .main_clk = "ipu1_gfclk_mux",
2224 .prcm = { 2225 .prcm = {
2225 .omap4 = { 2226 .omap4 = {
2226 .clkctrl_offs = DRA7XX_CM_IPU1_IPU1_CLKCTRL_OFFSET, 2227 .clkctrl_offs = DRA7XX_CM_IPU1_IPU1_CLKCTRL_OFFSET,
diff --git a/drivers/iommu/omap-iommu.h b/drivers/iommu/omap-iommu.h
index 250ef3284552..71a484ae97e9 100644
--- a/drivers/iommu/omap-iommu.h
+++ b/drivers/iommu/omap-iommu.h
@@ -131,6 +131,7 @@ static inline struct omap_iommu *dev_to_omap_iommu(struct device *dev)
131#define MMU_READ_CAM 0x68 131#define MMU_READ_CAM 0x68
132#define MMU_READ_RAM 0x6c 132#define MMU_READ_RAM 0x6c
133#define MMU_EMU_FAULT_AD 0x70 133#define MMU_EMU_FAULT_AD 0x70
134#define MMU_GP_REG 0x88
134 135
135#define MMU_REG_SIZE 256 136#define MMU_REG_SIZE 256
136 137
@@ -164,6 +165,8 @@ static inline struct omap_iommu *dev_to_omap_iommu(struct device *dev)
164#define MMU_RAM_MIXED_MASK (1 << MMU_RAM_MIXED_SHIFT) 165#define MMU_RAM_MIXED_MASK (1 << MMU_RAM_MIXED_SHIFT)
165#define MMU_RAM_MIXED MMU_RAM_MIXED_MASK 166#define MMU_RAM_MIXED MMU_RAM_MIXED_MASK
166 167
168#define MMU_GP_REG_BUS_ERR_BACK_EN 0x1
169
167/* 170/*
168 * DSP_SYSTEM registers (applicable only for DRA7xx DSP) 171 * DSP_SYSTEM registers (applicable only for DRA7xx DSP)
169 */ 172 */
diff --git a/drivers/iommu/omap-iommu2.c b/drivers/iommu/omap-iommu2.c
index 757cf45248a3..016665ee8610 100644
--- a/drivers/iommu/omap-iommu2.c
+++ b/drivers/iommu/omap-iommu2.c
@@ -102,6 +102,7 @@ static void __iommu_set_twl(struct omap_iommu *obj, bool on)
102static int omap2_iommu_enable(struct omap_iommu *obj) 102static int omap2_iommu_enable(struct omap_iommu *obj)
103{ 103{
104 u32 l, pa; 104 u32 l, pa;
105 struct iommu_platform_data *pdata = obj->dev->platform_data;
105 106
106 if (!obj->iopgd || !IS_ALIGNED((u32)obj->iopgd, SZ_16K)) 107 if (!obj->iopgd || !IS_ALIGNED((u32)obj->iopgd, SZ_16K))
107 return -EINVAL; 108 return -EINVAL;
@@ -117,6 +118,8 @@ static int omap2_iommu_enable(struct omap_iommu *obj)
117 iommu_write_reg(obj, pa, MMU_TTB); 118 iommu_write_reg(obj, pa, MMU_TTB);
118 119
119 dra7_cfg_dspsys_mmu(obj, true); 120 dra7_cfg_dspsys_mmu(obj, true);
121 if (pdata->has_bus_err_back)
122 iommu_write_reg(obj, MMU_GP_REG_BUS_ERR_BACK_EN, MMU_GP_REG);
120 __iommu_set_twl(obj, true); 123 __iommu_set_twl(obj, true);
121 124
122 return 0; 125 return 0;
diff --git a/drivers/rpmsg/rpmsg_rpc.c b/drivers/rpmsg/rpmsg_rpc.c
index 5a56c87688aa..d1d00db50846 100644
--- a/drivers/rpmsg/rpmsg_rpc.c
+++ b/drivers/rpmsg/rpmsg_rpc.c
@@ -616,6 +616,8 @@ static int rppc_release(struct inode *inode, struct file *filp)
616 616
617 mutex_lock(&rpc->lock); 617 mutex_lock(&rpc->lock);
618 idr_for_each(&rpc->dma_idr, rppc_free_dmabuf, rpc); 618 idr_for_each(&rpc->dma_idr, rppc_free_dmabuf, rpc);
619 idr_remove_all(&rpc->dma_idr);
620 idr_destroy(&rpc->dma_idr);
619 mutex_unlock(&rpc->lock); 621 mutex_unlock(&rpc->lock);
620 622
621 mutex_lock(&rppcdev->lock); 623 mutex_lock(&rppcdev->lock);
diff --git a/include/linux/platform_data/iommu-omap.h b/include/linux/platform_data/iommu-omap.h
index 5b429c43a297..a746fd681f56 100644
--- a/include/linux/platform_data/iommu-omap.h
+++ b/include/linux/platform_data/iommu-omap.h
@@ -35,11 +35,14 @@ struct omap_iommu_arch_data {
35 * @da_end: device address where the va space ends. 35 * @da_end: device address where the va space ends.
36 * @nr_tlb_entries: number of entries supported by the translation 36 * @nr_tlb_entries: number of entries supported by the translation
37 * look-aside buffer (TLB). 37 * look-aside buffer (TLB).
38 * @has_bus_err_back: flag to indicate if the mmu has bus-error back
39 * response enable functionality.
38 */ 40 */
39struct omap_mmu_dev_attr { 41struct omap_mmu_dev_attr {
40 u32 da_start; 42 u32 da_start;
41 u32 da_end; 43 u32 da_end;
42 int nr_tlb_entries; 44 int nr_tlb_entries;
45 int has_bus_err_back;
43}; 46};
44 47
45struct iommu_platform_data { 48struct iommu_platform_data {
@@ -48,6 +51,7 @@ struct iommu_platform_data {
48 int nr_tlb_entries; 51 int nr_tlb_entries;
49 u32 da_start; 52 u32 da_start;
50 u32 da_end; 53 u32 da_end;
54 int has_bus_err_back;
51 55
52 int (*assert_reset)(struct platform_device *pdev, const char *name); 56 int (*assert_reset)(struct platform_device *pdev, const char *name);
53 int (*deassert_reset)(struct platform_device *pdev, const char *name); 57 int (*deassert_reset)(struct platform_device *pdev, const char *name);