obj-$(CONFIG_PM) += pm.o sleep.o
# DSP
-obj-$(CONFIG_OMAP_DSP) += mailbox_mach.o mmu.o
-mailbox_mach-objs := mailbox.o
+obj-$(CONFIG_OMAP_MMU_FWK) += mmu_mach.o
+obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox_mach.o
+mailbox_mach-objs := mailbox.o
+mmu_mach-objs := mmu.o
led-y := leds.o
omap_dsp_release_mem();
}
}
+EXPORT_SYMBOL_GPL(dsp_mem_usecount_clear);
static int omap1_mmu_mem_enable(struct omap_mmu *mmu, void *addr)
{
.cam_ram_alloc = omap1_mmu_cam_ram_alloc,
.cam_ram_valid = omap1_mmu_cam_ram_valid,
};
-
+EXPORT_SYMBOL_GPL(omap1_mmu_ops);
static inline unsigned short
omap_mmu_read_reg(struct omap_mmu *mmu, unsigned long reg)
{
- return omap_readw(mmu->base + reg);
+ return __raw_readw(mmu->base + reg);
}
static void omap_mmu_write_reg(struct omap_mmu *mmu,
unsigned short val, unsigned long reg)
{
- omap_writew(val, mmu->base + reg);
+ __raw_writew(val, mmu->base + reg);
}
int omap_dsp_request_mem(void);
obj-$(CONFIG_PM) += pm.o sleep.o
# DSP
-obj-$(CONFIG_OMAP_DSP) += mailbox_mach.o mmu.o
-mailbox_mach-objs := mailbox.o
+obj-$(CONFIG_OMAP_MMU_FWK) += mmu_mach.o
+obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox_mach.o
+mailbox_mach-objs := mailbox.o
+mmu_mach-objs := mmu.o
# Specific board support
obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o
.cam_ram_alloc = omap2_mmu_cam_ram_alloc,
.cam_ram_valid = omap2_mmu_cam_ram_valid,
};
+EXPORT_SYMBOL_GPL(omap2_mmu_ops);
+
+MODULE_LICENSE("GPL");
Say Y here if you want support for the OMAP Multichannel
Buffered Serial Port.
+config OMAP_MMU_FWK
+ tristate "MMU framework support"
+ depends on ARCH_OMAP
+ default n
+ help
+ Say Y here if you want to use OMAP MMU framework support for
+ DSP, IVA1.0 and Camera in OMAP1/2.
+
+config OMAP_MBOX_FWK
+ tristate "Mailbox framework support"
+ depends on ARCH_OMAP
+ default n
+ help
+ Say Y here if you want to use OMAP Mailbox framework support for
+ DSP and IVA1.0 in OMAP1/2.
+
choice
prompt "System timer"
default OMAP_MPU_TIMER
obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
+# OMAP MMU framework
+obj-$(CONFIG_OMAP_MMU_FWK) += mmu.o
+
+# OMAP mailbox framework
+obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
+
# DSP subsystem
obj-y += dsp/
-obj-$(CONFIG_OMAP_DSP) += mailbox.o mmu.o
config OMAP_DSP
tristate "OMAP DSP driver (DSP Gateway)"
depends on ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP24XX
+ select OMAP_MMU_FWK
+ select OMAP_MBOX_FWK
help
This enables OMAP DSP driver, DSP Gateway.
EXPORT_SYMBOL(dsp_cpustat_get_stat);
EXPORT_SYMBOL(dsp_cpustat_get_icrmask);
EXPORT_SYMBOL(dsp_cpustat_set_icrmask);
-#ifdef CONFIG_ARCH_OMAP1
EXPORT_SYMBOL(dsp_register_mem_cb);
EXPORT_SYMBOL(dsp_unregister_mem_cb);
-#endif /* CONFIG_ARCH_OMAP1 */
EXPORT_SYMBOL(__cpu_flush_kern_tlb_range);
EXPORT_SYMBOL(cpu_architecture);
struct omap_mmu dsp_mmu = {
.name = "dsp",
.type = OMAP_MMU_DSP,
- .base = OMAP15XX_DSP_START,
+ .base = DSP_MMU_BASE,
.membase = OMAP15XX_DSP_BASE,
.memsize = OMAP15XX_DSP_SIZE,
.nr_tlb_entries = 32,
struct omap_mmu dsp_mmu = {
.name = "dsp",
.type = OMAP_MMU_DSP,
- .base = OMAP16XX_DSP_START,
+ .base = DSP_MMU_BASE,
.membase = OMAP16XX_DSP_BASE,
.memsize = OMAP16XX_DSP_SIZE,
.nr_tlb_entries = 32,
/*
* DSP MMU
*/
-#define DSP_MMU_BASE (0xfffed200)
+#define DSP_MMU_BASE (0xfefed200)
#define DSP_MMU_PREFETCH (DSP_MMU_BASE + 0x00)
#define DSP_MMU_WALKING_ST (DSP_MMU_BASE + 0x04)
#define DSP_MMU_CNTL (DSP_MMU_BASE + 0x08)
#include <linux/poll.h>
#include <linux/sched.h>
#include <asm/uaccess.h>
+#include <asm/arch/dsp.h>
#include "dsp_mbcmd.h"
#include "dsp.h"
-#include "ioctl.h"
static DECLARE_WAIT_QUEUE_HEAD(read_wait_q);
static unsigned int change_cnt;
return 0;
}
+EXPORT_SYMBOL_GPL(exmap_valid);
/*
* omap_mmu_exmap_use(), unuse():
/* valid mapping not found */
return 0;
}
+EXPORT_SYMBOL_GPL(omap_mmu_virt_to_phys);
/*
* MMU operations
omap_mmu_exunmap(mmu, dspadr);
return status;
}
+EXPORT_SYMBOL_GPL(omap_mmu_exmap);
static unsigned long unmap_free_arm(struct exmap_tbl *ent)
{
INIT_TLB_ENTRY_4KB_PRESERVED(&tlb_ent, dspadr, phys);
omap_mmu_load_tlb_entry(mmu, &tlb_ent);
}
+EXPORT_SYMBOL_GPL(exmap_setup_preserved_mem_page);
void exmap_clear_mem_page(struct omap_mmu *mmu, unsigned long dspadr)
{
exmap_clear_armmmu((unsigned long)virt, PAGE_SIZE);
/* DSP MMU is shutting down. not handled here. */
}
+EXPORT_SYMBOL_GPL(exmap_clear_mem_page);
static void omap_mmu_reset(struct omap_mmu *mmu)
{
mmu->exmap_tbl = NULL;
return ret;
}
+EXPORT_SYMBOL_GPL(omap_mmu_register);
void omap_mmu_unregister(struct omap_mmu *mmu)
{
device_unregister(&mmu->dev);
}
+EXPORT_SYMBOL_GPL(omap_mmu_unregister);
static int __init omap_mmu_class_init(void)
{
subsys_initcall(omap_mmu_class_init);
module_exit(omap_mmu_class_exit);
+
+MODULE_LICENSE("GPL");