~ubuntu-branches/ubuntu/precise/linux-linaro-u8500/precise

« back to all changes in this revision

Viewing changes to arch/arm/mach-omap2/iommu2.c

  • Committer: Bazaar Package Importer
  • Author(s): John Rigby, Upstream Fixes, Andy Green, John Rigby
  • Date: 2011-04-14 12:16:06 UTC
  • Revision ID: james.westby@ubuntu.com-20110414121606-b77podkyqgr2oix7
Tags: 2.6.38-1002.3
[ Upstream Fixes ]

* MUSB: shutdown: Make sure block is awake before doing shutdown
  - LP: #745737
* Fixed gpio polarity of gpio USB-phy reset.
  - LP: #747639

[ Andy Green ]

* LINARO: SAUCE: disable CONFIG_OMAP_RESET_CLOCKS
  - LP: #752900

[ John Rigby ]

* Rebase to new upstreams:
  Linux v2.6.38.1
  linaro-linux-2.6.38-upstream-29Mar2011
  Ubuntu-2.6.38-7.35
* SAUCE: OMAP4: clock: wait for module to become accessible on
  a clk enable
  - LP: #745737
* Rebase to new upstreams:
  Linux v2.6.38.2
  linaro-linux-2.6.38-upstream-5Apr2011
  Ubuntu-2.6.38-8.41
  - LP: #732842
* Update configs for device tree, dvfs and lttng
* LINARO: add building of dtb's
* LINARO: SAUCE: Disable lowest operating freqs on omap34xx
  - LP: #732912

Show diffs side-by-side

added added

removed removed

Lines of Context:
145
145
 
146
146
static u32 omap2_iommu_fault_isr(struct iommu *obj, u32 *ra)
147
147
{
148
 
        int i;
149
148
        u32 stat, da;
150
 
        const char *err_msg[] = {
151
 
                "tlb miss",
152
 
                "translation fault",
153
 
                "emulation miss",
154
 
                "table walk fault",
155
 
                "multi hit fault",
156
 
        };
 
149
        u32 errs = 0;
157
150
 
158
151
        stat = iommu_read_reg(obj, MMU_IRQSTATUS);
159
152
        stat &= MMU_IRQ_MASK;
160
 
        if (!stat)
 
153
        if (!stat) {
 
154
                *ra = 0;
161
155
                return 0;
 
156
        }
162
157
 
163
158
        da = iommu_read_reg(obj, MMU_FAULT_AD);
164
159
        *ra = da;
165
160
 
166
 
        dev_err(obj->dev, "%s:\tda:%08x ", __func__, da);
167
 
 
168
 
        for (i = 0; i < ARRAY_SIZE(err_msg); i++) {
169
 
                if (stat & (1 << i))
170
 
                        printk("%s ", err_msg[i]);
171
 
        }
172
 
        printk("\n");
173
 
 
 
161
        if (stat & MMU_IRQ_TLBMISS)
 
162
                errs |= OMAP_IOMMU_ERR_TLB_MISS;
 
163
        if (stat & MMU_IRQ_TRANSLATIONFAULT)
 
164
                errs |= OMAP_IOMMU_ERR_TRANS_FAULT;
 
165
        if (stat & MMU_IRQ_EMUMISS)
 
166
                errs |= OMAP_IOMMU_ERR_EMU_MISS;
 
167
        if (stat & MMU_IRQ_TABLEWALKFAULT)
 
168
                errs |= OMAP_IOMMU_ERR_TBLWALK_FAULT;
 
169
        if (stat & MMU_IRQ_MULTIHITFAULT)
 
170
                errs |= OMAP_IOMMU_ERR_MULTIHIT_FAULT;
174
171
        iommu_write_reg(obj, stat, MMU_IRQSTATUS);
175
172
 
176
 
        return stat;
 
173
        return errs;
177
174
}
178
175
 
179
176
static void omap2_tlb_read_cr(struct iommu *obj, struct cr_regs *cr)