Skip to content

Commit

Permalink
Revert "staging: tidspbridge - remove dmm custom module"
Browse files Browse the repository at this point in the history
This reverts commit 2ab5734.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
  • Loading branch information
Felipe Contreras authored and Omar Ramirez Luna committed Nov 11, 2010
1 parent 3fc59af commit 677f2de
Show file tree
Hide file tree
Showing 9 changed files with 747 additions and 6 deletions.
2 changes: 1 addition & 1 deletion drivers/staging/tidspbridge/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ libcore = core/chnl_sm.o core/msg_sm.o core/io_sm.o core/tiomap3430.o \
core/tiomap3430_pwr.o core/tiomap_io.o core/dsp-mmu.o \
core/ue_deh.o core/wdt.o core/dsp-clock.o core/sync.o
libpmgr = pmgr/chnl.o pmgr/io.o pmgr/msg.o pmgr/cod.o pmgr/dev.o pmgr/dspapi.o \
pmgr/cmm.o pmgr/dbll.o
pmgr/dmm.o pmgr/cmm.o pmgr/dbll.o
librmgr = rmgr/dbdcd.o rmgr/disp.o rmgr/drv.o rmgr/mgr.o rmgr/node.o \
rmgr/proc.o rmgr/pwr.o rmgr/rmm.o rmgr/strm.o rmgr/dspdrv.o \
rmgr/nldr.o rmgr/drv_interface.o
Expand Down
1 change: 1 addition & 0 deletions drivers/staging/tidspbridge/core/tiomap3430.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
/* ----------------------------------- Platform Manager */
#include <dspbridge/dev.h>
#include <dspbridge/dspapi.h>
#include <dspbridge/dmm.h>
#include <dspbridge/wdt.h>

/* ----------------------------------- Local */
Expand Down
24 changes: 24 additions & 0 deletions drivers/staging/tidspbridge/include/dspbridge/dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <dspbridge/nodedefs.h>
#include <dspbridge/dispdefs.h>
#include <dspbridge/dspdefs.h>
#include <dspbridge/dmm.h>
#include <dspbridge/host_os.h>

/* ----------------------------------- This */
Expand Down Expand Up @@ -232,6 +233,29 @@ extern int dev_get_chnl_mgr(struct dev_object *hdev_obj,
extern int dev_get_cmm_mgr(struct dev_object *hdev_obj,
struct cmm_object **mgr);

/*
* ======== dev_get_dmm_mgr ========
* Purpose:
* Retrieve the handle to the dynamic memory manager created for this
* device.
* Parameters:
* hdev_obj: Handle to device object created with
* dev_create_device().
* *mgr: Ptr to location to store handle.
* Returns:
* 0: Success.
* -EFAULT: Invalid hdev_obj.
* Requires:
* mgr != NULL.
* DEV Initialized.
* Ensures:
* 0: *mgr contains a handle to a channel manager object,
* or NULL.
* else: *mgr is NULL.
*/
extern int dev_get_dmm_mgr(struct dev_object *hdev_obj,
struct dmm_object **mgr);

/*
* ======== dev_get_cod_mgr ========
* Purpose:
Expand Down
75 changes: 75 additions & 0 deletions drivers/staging/tidspbridge/include/dspbridge/dmm.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
* dmm.h
*
* DSP-BIOS Bridge driver support functions for TI OMAP processors.
*
* The Dynamic Memory Mapping(DMM) module manages the DSP Virtual address
* space that can be directly mapped to any MPU buffer or memory region.
*
* Copyright (C) 2005-2006 Texas Instruments, Inc.
*
* This package is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/

#ifndef DMM_
#define DMM_

#include <dspbridge/dbdefs.h>

struct dmm_object;

/* DMM attributes used in dmm_create() */
struct dmm_mgrattrs {
u32 reserved;
};

#define DMMPOOLSIZE 0x4000000

/*
* ======== dmm_get_handle ========
* Purpose:
* Return the dynamic memory manager object for this device.
* This is typically called from the client process.
*/

extern int dmm_get_handle(void *hprocessor,
struct dmm_object **dmm_manager);

extern int dmm_reserve_memory(struct dmm_object *dmm_mgr,
u32 size, u32 *prsv_addr);

extern int dmm_un_reserve_memory(struct dmm_object *dmm_mgr,
u32 rsv_addr);

extern int dmm_map_memory(struct dmm_object *dmm_mgr, u32 addr,
u32 size);

extern int dmm_un_map_memory(struct dmm_object *dmm_mgr,
u32 addr, u32 *psize);

extern int dmm_destroy(struct dmm_object *dmm_mgr);

extern int dmm_delete_tables(struct dmm_object *dmm_mgr);

extern int dmm_create(struct dmm_object **dmm_manager,
struct dev_object *hdev_obj,
const struct dmm_mgrattrs *mgr_attrts);

extern bool dmm_init(void);

extern void dmm_exit(void);

extern int dmm_create_tables(struct dmm_object *dmm_mgr,
u32 addr, u32 size);

#ifdef DSP_DMM_DEBUG
u32 dmm_mem_map_dump(struct dmm_object *dmm_mgr);
#endif

#endif /* DMM_ */
6 changes: 6 additions & 0 deletions drivers/staging/tidspbridge/include/dspbridge/drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,12 @@ struct dmm_map_object {
struct bridge_dma_map_info dma_info;
};

/* Used for DMM reserved memory accounting */
struct dmm_rsv_object {
struct list_head link;
u32 dsp_reserved_addr;
};

/* New structure (member of process context) abstracts DMM resource info */
struct dspheap_res_object {
s32 heap_allocated; /* DMM status */
Expand Down
61 changes: 57 additions & 4 deletions drivers/staging/tidspbridge/pmgr/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include <dspbridge/cod.h>
#include <dspbridge/drv.h>
#include <dspbridge/proc.h>
#include <dspbridge/dmm.h>

/* ----------------------------------- Resource Manager */
#include <dspbridge/mgr.h>
Expand Down Expand Up @@ -74,6 +75,7 @@ struct dev_object {
struct msg_mgr *hmsg_mgr; /* Message manager. */
struct io_mgr *hio_mgr; /* IO manager (CHNL, msg_ctrl) */
struct cmm_object *hcmm_mgr; /* SM memory manager. */
struct dmm_object *dmm_mgr; /* Dynamic memory manager. */
struct ldr_module *module_obj; /* Bridge Module handle. */
u32 word_size; /* DSP word size: quick access. */
struct drv_object *hdrv_obj; /* Driver Object */
Expand Down Expand Up @@ -248,6 +250,9 @@ int dev_create_device(struct dev_object **device_obj,
/* Instantiate the DEH module */
status = bridge_deh_create(&dev_obj->hdeh_mgr, dev_obj);
}
/* Create DMM mgr . */
status = dmm_create(&dev_obj->dmm_mgr,
(struct dev_object *)dev_obj, NULL);
}
/* Add the new DEV_Object to the global list: */
if (!status) {
Expand All @@ -273,6 +278,8 @@ int dev_create_device(struct dev_object **device_obj,
kfree(dev_obj->proc_list);
if (dev_obj->cod_mgr)
cod_delete(dev_obj->cod_mgr);
if (dev_obj->dmm_mgr)
dmm_destroy(dev_obj->dmm_mgr);
kfree(dev_obj);
}

Expand Down Expand Up @@ -382,6 +389,11 @@ int dev_destroy_device(struct dev_object *hdev_obj)
dev_obj->hcmm_mgr = NULL;
}

if (dev_obj->dmm_mgr) {
dmm_destroy(dev_obj->dmm_mgr);
dev_obj->dmm_mgr = NULL;
}

/* Call the driver's bridge_dev_destroy() function: */
/* Require of DevDestroy */
if (dev_obj->hbridge_context) {
Expand Down Expand Up @@ -461,6 +473,32 @@ int dev_get_cmm_mgr(struct dev_object *hdev_obj,
return status;
}

/*
* ======== dev_get_dmm_mgr ========
* Purpose:
* Retrieve the handle to the dynamic memory manager created for this
* device.
*/
int dev_get_dmm_mgr(struct dev_object *hdev_obj,
struct dmm_object **mgr)
{
int status = 0;
struct dev_object *dev_obj = hdev_obj;

DBC_REQUIRE(refs > 0);
DBC_REQUIRE(mgr != NULL);

if (hdev_obj) {
*mgr = dev_obj->dmm_mgr;
} else {
*mgr = NULL;
status = -EFAULT;
}

DBC_ENSURE(!status || (mgr != NULL && *mgr == NULL));
return status;
}

/*
* ======== dev_get_cod_mgr ========
* Purpose:
Expand Down Expand Up @@ -713,8 +751,10 @@ void dev_exit(void)

refs--;

if (refs == 0)
if (refs == 0) {
cmm_exit();
dmm_exit();
}

DBC_ENSURE(refs >= 0);
}
Expand All @@ -726,12 +766,25 @@ void dev_exit(void)
*/
bool dev_init(void)
{
bool ret = true;
bool cmm_ret, dmm_ret, ret = true;

DBC_REQUIRE(refs >= 0);

if (refs == 0)
ret = cmm_init();
if (refs == 0) {
cmm_ret = cmm_init();
dmm_ret = dmm_init();

ret = cmm_ret && dmm_ret;

if (!ret) {
if (cmm_ret)
cmm_exit();

if (dmm_ret)
dmm_exit();

}
}

if (ret)
refs++;
Expand Down
Loading

0 comments on commit 677f2de

Please sign in to comment.