diff options
author | Praneeth Bajjuri | 2014-02-21 15:53:14 -0600 |
---|---|---|
committer | Praneeth Bajjuri | 2014-02-21 15:53:14 -0600 |
commit | e8e54eaa2c8109fc871c387dd198963c416a1af1 (patch) | |
tree | 169c5ef41b3a1426a3dfc4fe81c1b3b1cd4f9844 | |
parent | 4bb7edcae4e3538685ac07f014d03d131d065e29 (diff) | |
parent | 5c27a8c02babddc1c675ce0f76c556b724970df5 (diff) | |
download | kernel-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.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap-iommu.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_54xx_data.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 5 | ||||
-rw-r--r-- | drivers/iommu/omap-iommu.h | 3 | ||||
-rw-r--r-- | drivers/iommu/omap-iommu2.c | 3 | ||||
-rw-r--r-- | drivers/rpmsg/rpmsg_rpc.c | 2 | ||||
-rw-r--r-- | include/linux/platform_data/iommu-omap.h | 4 |
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 | ||
2134 | static struct reparent_init_clks reparent_clks[] = { | 2134 | static 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 | ||
2138 | static struct rate_init_clks rate_clks[] = { | 2139 | static 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 | ||
2534 | static struct omap_hwmod omap44xx_mmu_ipu_hwmod; | 2535 | static 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 | ||
2588 | static struct omap_hwmod_irq_info omap54xx_mmu_ipu_irqs[] = { | 2589 | static 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 | ||
2206 | static struct omap_hwmod_rst_info dra7xx_mmu_ipu_resets[] = { | 2207 | static 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) | |||
102 | static int omap2_iommu_enable(struct omap_iommu *obj) | 102 | static 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 | */ |
39 | struct omap_mmu_dev_attr { | 41 | struct 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 | ||
45 | struct iommu_platform_data { | 48 | struct 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); |