misc patches
Subsystems (2)
v2 cover misc patches
Ioctl numbers has changed, this will require an update on libbridge and clients accesing directly to the driver
- IO_ADDRESS is replaced for ioremap.
*v2
- dropped from the series:
DSPBRIDGE: Increased DMM size to 256MB
DSPBRIDGE: sysfs entry for global driver state
- will be kept in bridge-pm
DSPBRIDGE: Use dspbridge to initialize platform data
DSPBRIDGE: change to cpufreq_register_notifier for OPP changes
DSPBRIDGE: Fix header locations mach to plat
- previously acked
DSPBRIDGE: Remove unused hDrvObject in bridge_[open|release]
Omar Ramirez Luna (6):
DSPBRIDGE: replace IO_ADDRESS with ioremap
DSPBRIDGE: Replace magic numbers in SSI configuration
DSPBRIDGE: Mark unused ioctls as deprecated
DSPBRIDGE: remove ioctl runtime check
DSPBRIDGE: Rename pResult to result for WCD_CallDevIOCtl
DSPBRIDGE: Use _IOxx macro to define ioctls
arch/arm/plat-omap/include/dspbridge/wcdioctl.h | 167 +++++++++-------- drivers/dsp/bridge/pmgr/wcd.c | 228 +++++++++++++---------- drivers/dsp/bridge/rmgr/drv_interface.c | 3 - drivers/dsp/bridge/services/clk.c | 23 ++- 4 files changed, 234 insertions(+), 187 deletions(-)
PATCH v2 1/6 DSPBRIDGE: replace IO_ADDRESS with ioremap
Use ioremap() instead of using IO_ADDRESS macro to make it generic.
--- drivers/dsp/bridge/services/clk.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-)
drivers/dsp/bridge/services/clk.c +9 -6
@@ -54,10 +54,9 @@typedef volatile unsigned long REG_UWORD32 ; -#define SSI_Base 0x48058000 - -#define SSI_BASE IO_ADDRESS(SSI_Base) - +#define OMAP_SSI_OFFSET 0x58000 +#define OMAP_SSI_SIZE 0x1000 +#define OMAP_SSI_SYSCONFIG_OFFSET 0x10struct SERVICES_Clk_t {struct clk *clk_handle;
@@ -355,7 +354,9 @@ s32 CLK_Get_UseCnt(IN enum SERVICES_ClkId clk_id)void SSI_Clk_Prepare (bool FLAG ) {u32 ssi_sysconfig; - ssi_sysconfig =__raw_readl ((SSI_BASE ) +0x10 ); +void __iomem *ssi_base; + + ssi_base =ioremap (L4_34XX_BASE +OMAP_SSI_OFFSET ,OMAP_SSI_SIZE );if (FLAG ) {/* Set Autoidle, SIDLEMode to smart idle, and MIDLEmode to
@@ -368,5 +369,7 @@ void SSI_Clk_Prepare(bool FLAG)*/ ssi_sysconfig =0x1 ; } -__raw_writel ((u32 )ssi_sysconfig,SSI_BASE +0x10 ); + +__raw_writel (ssi_sysconfig, ssi_base +OMAP_SSI_SYSCONFIG_OFFSET ); +iounmap (ssi_base); }
Signature · 1 line
1.6.2.4
PATCH v2 2/6 DSPBRIDGE: Replace magic numbers in SSI configuration
Rename ssi_sysconfig variable and replace the usage of magic numbers while updating SSI configuration.
--- drivers/dsp/bridge/services/clk.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-)
drivers/dsp/bridge/services/clk.c +8 -4
@@ -58,6 +58,10 @@ typedef volatile unsigned long REG_UWORD32;#define OMAP_SSI_SIZE 0x1000#define OMAP_SSI_SYSCONFIG_OFFSET 0x10 +#define SSI_AUTOIDLE (1 << 0) +#define SSI_SIDLE_SMARTIDLE (2 << 3) +#define SSI_MIDLE_NOIDLE (1 << 12) +struct SERVICES_Clk_t {struct clk *clk_handle;const char *clk_name;
@@ -353,8 +357,8 @@ s32 CLK_Get_UseCnt(IN enum SERVICES_ClkId clk_id)void SSI_Clk_Prepare (bool FLAG ) { -u32 ssi_sysconfig;void __iomem *ssi_base; +unsigned int value; ssi_base =ioremap (L4_34XX_BASE +OMAP_SSI_OFFSET ,OMAP_SSI_SIZE );
@@ -362,14 +366,14 @@ void SSI_Clk_Prepare(bool FLAG)/* Set Autoidle, SIDLEMode to smart idle, and MIDLEmode to * no idle */ - ssi_sysconfig =0x1011 ; + value =SSI_AUTOIDLE |SSI_SIDLE_SMARTIDLE |SSI_MIDLE_NOIDLE ; }else {/* Set Autoidle, SIDLEMode to forced idle, and MIDLEmode to * forced idle */ - ssi_sysconfig =0x1 ; + value =SSI_AUTOIDLE ; } -__raw_writel (ssi_sysconfig, ssi_base +OMAP_SSI_SYSCONFIG_OFFSET ); +__raw_writel (value, ssi_base +OMAP_SSI_SYSCONFIG_OFFSET );iounmap (ssi_base); }
Signature · 1 line
1.6.2.4
PATCH v2 3/6 DSPBRIDGE: Mark unused ioctls as deprecated
Mark unused ioctls as deprecated for future removal.
--- arch/arm/plat-omap/include/dspbridge/wcdioctl.h | 11 ++++-- drivers/dsp/bridge/pmgr/wcd.c | 38 +++++++++-------------- 2 files changed, 22 insertions(+), 27 deletions(-)
arch/arm/plat-omap/include/dspbridge/wcdioctl.h +7 -4
@@ -439,6 +439,8 @@ union Trapped_Args {#define CMD_BASE 1 +/* TODO: Remove deprecated and not implemented */ +/* MGR module offsets */ #define CMD_MGR_BASE_OFFSET CMD_BASE#define CMD_MGR_ENUMNODE_INFO_OFFSET (CMD_MGR_BASE_OFFSET + 0)
@@ -448,7 +450,7 @@ union Trapped_Args {#define CMD_MGR_WAIT_OFFSET (CMD_MGR_BASE_OFFSET + 4)#ifndef RES_CLEANUP_DISABLE -#define CMD_MGR_RESOUCES_OFFSET (CMD_MGR_BASE_OFFSET + 5) +#define CMD_MGR_RESOUCES_OFFSET (CMD_MGR_BASE_OFFSET + 5)/* Deprecated */ #define CMD_MGR_END_OFFSET CMD_MGR_RESOUCES_OFFSET#else #define CMD_MGR_END_OFFSET CMD_MGR_WAIT_OFFSET
@@ -457,7 +459,7 @@ union Trapped_Args {#define CMD_PROC_BASE_OFFSET (CMD_MGR_END_OFFSET + 1)#define CMD_PROC_ATTACH_OFFSET (CMD_PROC_BASE_OFFSET + 0)#define CMD_PROC_CTRL_OFFSET (CMD_PROC_BASE_OFFSET + 1) -#define CMD_PROC_DETACH_OFFSET (CMD_PROC_BASE_OFFSET + 2) +#define CMD_PROC_DETACH_OFFSET (CMD_PROC_BASE_OFFSET + 2)/* Deprecated */ #define CMD_PROC_ENUMNODE_OFFSET (CMD_PROC_BASE_OFFSET + 3)#define CMD_PROC_ENUMRESOURCES_OFFSET (CMD_PROC_BASE_OFFSET + 4)#define CMD_PROC_GETSTATE_OFFSET (CMD_PROC_BASE_OFFSET + 5)
@@ -497,6 +499,7 @@ union Trapped_Args {#define CMD_STRM_ALLOCATEBUFFER_OFFSET (CMD_STRM_BASE_OFFSET + 0)#define CMD_STRM_CLOSE_OFFSET (CMD_STRM_BASE_OFFSET + 1)#define CMD_STRM_FREEBUFFER_OFFSET (CMD_STRM_BASE_OFFSET + 2) +/* Not Impl'd */ #define CMD_STRM_GETEVENTHANDLE_OFFSET (CMD_STRM_BASE_OFFSET + 3)#define CMD_STRM_GETINFO_OFFSET (CMD_STRM_BASE_OFFSET + 4)#define CMD_STRM_IDLE_OFFSET (CMD_STRM_BASE_OFFSET + 5)
@@ -509,8 +512,8 @@ union Trapped_Args {/* Communication Memory Manager (UCMM) */ #define CMD_CMM_BASE_OFFSET (CMD_STRM_END_OFFSET + 1) -#define CMD_CMM_ALLOCBUF_OFFSET (CMD_CMM_BASE_OFFSET + 0) -#define CMD_CMM_FREEBUF_OFFSET (CMD_CMM_BASE_OFFSET + 1) +#define CMD_CMM_ALLOCBUF_OFFSET (CMD_CMM_BASE_OFFSET + 0)/* Not Impl'd */ +#define CMD_CMM_FREEBUF_OFFSET (CMD_CMM_BASE_OFFSET + 1)/* Not Impl'd */ #define CMD_CMM_GETHANDLE_OFFSET (CMD_CMM_BASE_OFFSET + 2)#define CMD_CMM_GETINFO_OFFSET (CMD_CMM_BASE_OFFSET + 3)#define CMD_CMM_END_OFFSET CMD_CMM_GETINFO_OFFSET
drivers/dsp/bridge/pmgr/wcd.c +15 -23
@@ -456,6 +456,8 @@ DSP_STATUS WCD_InitComplete2(void)return status; } +/* TODO: Remove deprecated and not implemented ioctl wrappers */ +/* * ======== MGRWRAP_EnumNode_Info ======== */
@@ -634,21 +636,11 @@ u32 MGRWRAP_WaitForBridgeEvents(union Trapped_Args *args, void *pr_ctxt)/* * ======== MGRWRAP_GetProcessResourceInfo ======== */ -u32 MGRWRAP_GetProcessResourcesInfo (union Trapped_Args *args,void *pr_ctxt) +u32 __deprecated MGRWRAP_GetProcessResourcesInfo (union Trapped_Args *args, +void *pr_ctxt) { -DSP_STATUS status =DSP_SOK ; -u32 uSize =0 ; -u8 *pBuf =MEM_Alloc (8092 ,MEM_NONPAGED ); -GT_1trace (WCD_debugMask,GT_ENTER , -"MGRWRAP_GetProcessResourcesInfo:uSize=%d :\n" , uSize); -cp_to_usr (args->ARGS_PROC_GETTRACE.pBuf, pBuf, status, uSize); -GT_0trace (WCD_debugMask,GT_ENTER ,"\n***********" -"123MGRWRAP_GetProcessResourcesInfo:**************\n" ); -GT_0trace (WCD_debugMask,GT_ENTER ,"\n***********" -"456MGRWRAP_GetProcessResourcesInfo:**************\n" ); -cp_to_usr (args->ARGS_PROC_GETTRACE.pSize, &uSize, status,1 ); -MEM_Free (pBuf); -return status; +pr_err ("%s: deprecated dspbridge ioctl\n" , __func__); +return DSP_SOK ; }#endif
@@ -732,14 +724,10 @@ func_end:/* * ======== PROCWRAP_Detach ======== */ -u32 PROCWRAP_Detach (union Trapped_Args *args,void *pr_ctxt) +u32 __deprecated PROCWRAP_Detach (union Trapped_Args *args,void *pr_ctxt) { -GT_1trace (WCD_debugMask,GT_ENTER , -"PROCWRAP_Detach: entered args\n0x%x " -"hProceesor \n" , args->ARGS_PROC_DETACH.hProcessor); -/* PROC_Detach called at bridge_release only */ - +pr_err ("%s: deprecated dspbridge ioctl\n" , __func__);return DSP_SOK ; }
@@ -1540,8 +1528,10 @@ u32 STRMWRAP_FreeBuffer(union Trapped_Args *args, void *pr_ctxt)/* * ======== STRMWRAP_GetEventHandle ======== */ -u32 STRMWRAP_GetEventHandle (union Trapped_Args *args,void *pr_ctxt) +u32 __deprecated STRMWRAP_GetEventHandle (union Trapped_Args *args, +void *pr_ctxt) { +pr_err ("%s: deprecated dspbridge ioctl\n" , __func__);return DSP_ENOTIMPL ; }
@@ -1703,18 +1693,20 @@ u32 STRMWRAP_Select(union Trapped_Args *args, void *pr_ctxt)/* * ======== CMMWRAP_CallocBuf ======== */ -u32 CMMWRAP_CallocBuf (union Trapped_Args *args,void *pr_ctxt) +u32 __deprecated CMMWRAP_CallocBuf (union Trapped_Args *args,void *pr_ctxt) {/* This operation is done in kernel */ +pr_err ("%s: deprecated dspbridge ioctl\n" , __func__);return DSP_ENOTIMPL ; }/* * ======== CMMWRAP_FreeBuf ======== */ -u32 CMMWRAP_FreeBuf (union Trapped_Args *args,void *pr_ctxt) +u32 __deprecated CMMWRAP_FreeBuf (union Trapped_Args *args,void *pr_ctxt) {/* This operation is done in kernel */ +pr_err ("%s: deprecated dspbridge ioctl\n" , __func__);return DSP_ENOTIMPL ; }
Signature · 1 line
1.6.2.4
PATCH v2 4/6 DSPBRIDGE: remove ioctl runtime check
This patch removes the runtime check of device
ioctl array.
--- drivers/dsp/bridge/pmgr/wcd.c | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-)
drivers/dsp/bridge/pmgr/wcd.c +0 -6
@@ -321,13 +321,7 @@ bool WCD_Init(void)bool fInit = true;bool fDRV, fDEV, fCOD, fSERVICES, fCHNL, fMSG, fIO;bool fMGR, fPROC, fNODE, fDISP, fNTFY, fSTRM, fRMM; -#ifdef DEBUG -/* runtime check of Device IOCtl array. */ -u32 i; -for (i =1 ; i <ARRAY_SIZE (WCD_cmdTable); i++) -DBC_Assert (WCD_cmdTable[i -1 ].dwIndex == i); -#endif if (WCD_cRefs ==0 ) {/* initialize all SERVICES modules */ fSERVICES =SERVICES_Init ();
Signature · 1 line
1.6.2.4
PATCH v2 5/6 DSPBRIDGE: Rename pResult to result for WCD_CallDevIOCtl
Trivial cleanup, rename pResult to result for WCD_CallDevIOCtl
--- drivers/dsp/bridge/pmgr/wcd.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/dsp/bridge/pmgr/wcd.c +2 -2
@@ -271,11 +271,11 @@ static inline void __cp_to_usr(void __user *to, const void *from,* Call the (wrapper) function for the corresponding WCD IOCTL. */ inline DSP_STATUS WCD_CallDevIOCtl (u32 cmd,union Trapped_Args *args, -u32 *pResult,void *pr_ctxt) +u32 *result,void *pr_ctxt) {if (cmd <ARRAY_SIZE (WCD_cmdTable)) {/* make the fxn call via the cmd table */ - *pResult = (*WCD_cmdTable[cmd].fxn) (args, pr_ctxt); + *result = (*WCD_cmdTable[cmd].fxn) (args, pr_ctxt);return DSP_SOK ; }
Signature · 1 line
1.6.2.4
PATCH v2 6/6 DSPBRIDGE: Use _IOxx macro to define ioctls
- Use standard convention to define ioctls.
Currently 0xDB is used as identifier for dspbridge.
Discussion:
http://marc.info/?l=linux-omap&m=126297631603035&w=2
WARNING:
An update in api ioctl definitions is required, usually replacing to a new libbridge (with ioctl patch) should be enough. Other clients (not using libbridge) need to update their ioctl numbers manually.
--- arch/arm/plat-omap/include/dspbridge/wcdioctl.h | 164 +++++++++++---------- drivers/dsp/bridge/pmgr/wcd.c | 182 ++++++++++++++--------- drivers/dsp/bridge/rmgr/drv_interface.c | 3 - 3 files changed, 200 insertions(+), 149 deletions(-)
arch/arm/plat-omap/include/dspbridge/wcdioctl.h +85 -79
@@ -437,86 +437,92 @@ union Trapped_Args { } ARGS_UTIL_TESTDLL; } ; -#define CMD_BASE 1 +/* Ioctl driver name */ +#define DB 0xDB + +/* Ioctl module masks */ +#define DB_MGR 0x0 +#define DB_PROC 0x20 +#define DB_NODE 0x40 +#define DB_STRM 0x60 +#define DB_CMM 0x80 + +/* +* Following are used to distinguish between module ioctls, this is needed +* in case new ioctls are introduced. +*/ +#define DB_MODULE_MASK 0xE0 +#define DB_IOC_MASK 0x1F + +/* Macro used to calculate the ioctl per dspbridge module */ +#define DB_IOC (module, num) \ + (((module) & DB_MODULE_MASK) | ((num) & DB_IOC_MASK))/* TODO: Remove deprecated and not implemented */ -/* MGR module offsets */ -#define CMD_MGR_BASE_OFFSET CMD_BASE -#define CMD_MGR_ENUMNODE_INFO_OFFSET (CMD_MGR_BASE_OFFSET + 0) -#define CMD_MGR_ENUMPROC_INFO_OFFSET (CMD_MGR_BASE_OFFSET + 1) -#define CMD_MGR_REGISTEROBJECT_OFFSET (CMD_MGR_BASE_OFFSET + 2) -#define CMD_MGR_UNREGISTEROBJECT_OFFSET (CMD_MGR_BASE_OFFSET + 3) -#define CMD_MGR_WAIT_OFFSET (CMD_MGR_BASE_OFFSET + 4) - -#ifndef RES_CLEANUP_DISABLE -#define CMD_MGR_RESOUCES_OFFSET (CMD_MGR_BASE_OFFSET + 5)/* Deprecated */ -#define CMD_MGR_END_OFFSET CMD_MGR_RESOUCES_OFFSET -#else -#define CMD_MGR_END_OFFSET CMD_MGR_WAIT_OFFSET -#endif - -#define CMD_PROC_BASE_OFFSET (CMD_MGR_END_OFFSET + 1) -#define CMD_PROC_ATTACH_OFFSET (CMD_PROC_BASE_OFFSET + 0) -#define CMD_PROC_CTRL_OFFSET (CMD_PROC_BASE_OFFSET + 1) -#define CMD_PROC_DETACH_OFFSET (CMD_PROC_BASE_OFFSET + 2)/* Deprecated */ -#define CMD_PROC_ENUMNODE_OFFSET (CMD_PROC_BASE_OFFSET + 3) -#define CMD_PROC_ENUMRESOURCES_OFFSET (CMD_PROC_BASE_OFFSET + 4) -#define CMD_PROC_GETSTATE_OFFSET (CMD_PROC_BASE_OFFSET + 5) -#define CMD_PROC_GETTRACE_OFFSET (CMD_PROC_BASE_OFFSET + 6) -#define CMD_PROC_LOAD_OFFSET (CMD_PROC_BASE_OFFSET + 7) -#define CMD_PROC_REGISTERNOTIFY_OFFSET (CMD_PROC_BASE_OFFSET + 8) -#define CMD_PROC_START_OFFSET (CMD_PROC_BASE_OFFSET + 9) -#define CMD_PROC_RSVMEM_OFFSET (CMD_PROC_BASE_OFFSET + 10) -#define CMD_PROC_UNRSVMEM_OFFSET (CMD_PROC_BASE_OFFSET + 11) -#define CMD_PROC_MAPMEM_OFFSET (CMD_PROC_BASE_OFFSET + 12) -#define CMD_PROC_UNMAPMEM_OFFSET (CMD_PROC_BASE_OFFSET + 13) -#define CMD_PROC_FLUSHMEMORY_OFFSET (CMD_PROC_BASE_OFFSET + 14) -#define CMD_PROC_STOP_OFFSET (CMD_PROC_BASE_OFFSET + 15) -#define CMD_PROC_INVALIDATEMEMORY_OFFSET (CMD_PROC_BASE_OFFSET + 16) -#define CMD_PROC_END_OFFSET CMD_PROC_INVALIDATEMEMORY_OFFSET - - -#define CMD_NODE_BASE_OFFSET (CMD_PROC_END_OFFSET + 1) -#define CMD_NODE_ALLOCATE_OFFSET (CMD_NODE_BASE_OFFSET + 0) -#define CMD_NODE_ALLOCMSGBUF_OFFSET (CMD_NODE_BASE_OFFSET + 1) -#define CMD_NODE_CHANGEPRIORITY_OFFSET (CMD_NODE_BASE_OFFSET + 2) -#define CMD_NODE_CONNECT_OFFSET (CMD_NODE_BASE_OFFSET + 3) -#define CMD_NODE_CREATE_OFFSET (CMD_NODE_BASE_OFFSET + 4) -#define CMD_NODE_DELETE_OFFSET (CMD_NODE_BASE_OFFSET + 5) -#define CMD_NODE_FREEMSGBUF_OFFSET (CMD_NODE_BASE_OFFSET + 6) -#define CMD_NODE_GETATTR_OFFSET (CMD_NODE_BASE_OFFSET + 7) -#define CMD_NODE_GETMESSAGE_OFFSET (CMD_NODE_BASE_OFFSET + 8) -#define CMD_NODE_PAUSE_OFFSET (CMD_NODE_BASE_OFFSET + 9) -#define CMD_NODE_PUTMESSAGE_OFFSET (CMD_NODE_BASE_OFFSET + 10) -#define CMD_NODE_REGISTERNOTIFY_OFFSET (CMD_NODE_BASE_OFFSET + 11) -#define CMD_NODE_RUN_OFFSET (CMD_NODE_BASE_OFFSET + 12) -#define CMD_NODE_TERMINATE_OFFSET (CMD_NODE_BASE_OFFSET + 13) -#define CMD_NODE_GETUUIDPROPS_OFFSET (CMD_NODE_BASE_OFFSET + 14) -#define CMD_NODE_END_OFFSET CMD_NODE_GETUUIDPROPS_OFFSET - -#define CMD_STRM_BASE_OFFSET (CMD_NODE_END_OFFSET + 1) -#define CMD_STRM_ALLOCATEBUFFER_OFFSET (CMD_STRM_BASE_OFFSET + 0) -#define CMD_STRM_CLOSE_OFFSET (CMD_STRM_BASE_OFFSET + 1) -#define CMD_STRM_FREEBUFFER_OFFSET (CMD_STRM_BASE_OFFSET + 2) -/* Not Impl'd */ -#define CMD_STRM_GETEVENTHANDLE_OFFSET (CMD_STRM_BASE_OFFSET + 3) -#define CMD_STRM_GETINFO_OFFSET (CMD_STRM_BASE_OFFSET + 4) -#define CMD_STRM_IDLE_OFFSET (CMD_STRM_BASE_OFFSET + 5) -#define CMD_STRM_ISSUE_OFFSET (CMD_STRM_BASE_OFFSET + 6) -#define CMD_STRM_OPEN_OFFSET (CMD_STRM_BASE_OFFSET + 7) -#define CMD_STRM_RECLAIM_OFFSET (CMD_STRM_BASE_OFFSET + 8) -#define CMD_STRM_REGISTERNOTIFY_OFFSET (CMD_STRM_BASE_OFFSET + 9) -#define CMD_STRM_SELECT_OFFSET (CMD_STRM_BASE_OFFSET + 10) -#define CMD_STRM_END_OFFSET CMD_STRM_SELECT_OFFSET - -/* Communication Memory Manager (UCMM) */ -#define CMD_CMM_BASE_OFFSET (CMD_STRM_END_OFFSET + 1) -#define CMD_CMM_ALLOCBUF_OFFSET (CMD_CMM_BASE_OFFSET + 0)/* Not Impl'd */ -#define CMD_CMM_FREEBUF_OFFSET (CMD_CMM_BASE_OFFSET + 1)/* Not Impl'd */ -#define CMD_CMM_GETHANDLE_OFFSET (CMD_CMM_BASE_OFFSET + 2) -#define CMD_CMM_GETINFO_OFFSET (CMD_CMM_BASE_OFFSET + 3) -#define CMD_CMM_END_OFFSET CMD_CMM_GETINFO_OFFSET - -#define CMD_BASE_END_OFFSET CMD_CMM_END_OFFSET +/* MGR Module */ +#define MGR_ENUMNODE_INFO _IOWR(DB, DB_IOC(DB_MGR, 0), unsigned long) +#define MGR_ENUMPROC_INFO _IOWR(DB, DB_IOC(DB_MGR, 1), unsigned long) +#define MGR_REGISTEROBJECT _IOWR(DB, DB_IOC(DB_MGR, 2), unsigned long) +#define MGR_UNREGISTEROBJECT _IOWR(DB, DB_IOC(DB_MGR, 3), unsigned long) +#define MGR_WAIT _IOWR(DB, DB_IOC(DB_MGR, 4), unsigned long) +/* Deprecated */ +#define MGR_GET_PROC_RES _IOR(DB, DB_IOC(DB_MGR, 5), unsigned long) + +/* PROC Module */ +#define PROC_ATTACH _IOWR(DB, DB_IOC(DB_PROC, 0), unsigned long) +#define PROC_CTRL _IOR(DB, DB_IOC(DB_PROC, 1), unsigned long) +/* Deprecated */ +#define PROC_DETACH _IOR(DB, DB_IOC(DB_PROC, 2), unsigned long) +#define PROC_ENUMNODE _IOWR(DB, DB_IOC(DB_PROC, 3), unsigned long) +#define PROC_ENUMRESOURCES _IOWR(DB, DB_IOC(DB_PROC, 4), unsigned long) +#define PROC_GET_STATE _IOWR(DB, DB_IOC(DB_PROC, 5), unsigned long) +#define PROC_GET_TRACE _IOWR(DB, DB_IOC(DB_PROC, 6), unsigned long) +#define PROC_LOAD _IOW(DB, DB_IOC(DB_PROC, 7), unsigned long) +#define PROC_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_PROC, 8), unsigned long) +#define PROC_START _IOW(DB, DB_IOC(DB_PROC, 9), unsigned long) +#define PROC_RSVMEM _IOWR(DB, DB_IOC(DB_PROC, 10), unsigned long) +#define PROC_UNRSVMEM _IOW(DB, DB_IOC(DB_PROC, 11), unsigned long) +#define PROC_MAPMEM _IOWR(DB, DB_IOC(DB_PROC, 12), unsigned long) +#define PROC_UNMAPMEM _IOR(DB, DB_IOC(DB_PROC, 13), unsigned long) +#define PROC_FLUSHMEMORY _IOW(DB, DB_IOC(DB_PROC, 14), unsigned long) +#define PROC_STOP _IOWR(DB, DB_IOC(DB_PROC, 15), unsigned long) +#define PROC_INVALIDATEMEMORY _IOW(DB, DB_IOC(DB_PROC, 16), unsigned long) + +/* NODE Module */ +#define NODE_ALLOCATE _IOWR(DB, DB_IOC(DB_NODE, 0), unsigned long) +#define NODE_ALLOCMSGBUF _IOWR(DB, DB_IOC(DB_NODE, 1), unsigned long) +#define NODE_CHANGEPRIORITY _IOW(DB, DB_IOC(DB_NODE, 2), unsigned long) +#define NODE_CONNECT _IOW(DB, DB_IOC(DB_NODE, 3), unsigned long) +#define NODE_CREATE _IOW(DB, DB_IOC(DB_NODE, 4), unsigned long) +#define NODE_DELETE _IOW(DB, DB_IOC(DB_NODE, 5), unsigned long) +#define NODE_FREEMSGBUF _IOW(DB, DB_IOC(DB_NODE, 6), unsigned long) +#define NODE_GETATTR _IOWR(DB, DB_IOC(DB_NODE, 7), unsigned long) +#define NODE_GETMESSAGE _IOWR(DB, DB_IOC(DB_NODE, 8), unsigned long) +#define NODE_PAUSE _IOW(DB, DB_IOC(DB_NODE, 9), unsigned long) +#define NODE_PUTMESSAGE _IOW(DB, DB_IOC(DB_NODE, 10), unsigned long) +#define NODE_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_NODE, 11), unsigned long) +#define NODE_RUN _IOW(DB, DB_IOC(DB_NODE, 12), unsigned long) +#define NODE_TERMINATE _IOWR(DB, DB_IOC(DB_NODE, 13), unsigned long) +#define NODE_GETUUIDPROPS _IOWR(DB, DB_IOC(DB_NODE, 14), unsigned long) + +/* STRM Module */ +#define STRM_ALLOCATEBUFFER _IOWR(DB, DB_IOC(DB_STRM, 0), unsigned long) +#define STRM_CLOSE _IOW(DB, DB_IOC(DB_STRM, 1), unsigned long) +#define STRM_FREEBUFFER _IOWR(DB, DB_IOC(DB_STRM, 2)98, unsigned long) +#define STRM_GETEVENTHANDLE _IO(DB, DB_IOC(DB_STRM, 3)/* Not Impl'd */ +#define STRM_GETINFO _IOWR(DB, DB_IOC(DB_STRM, 4), unsigned long) +#define STRM_IDLE _IOW(DB, DB_IOC(DB_STRM, 5), unsigned long) +#define STRM_ISSUE _IOW(DB, DB_IOC(DB_STRM, 6), unsigned long) +#define STRM_OPEN _IOWR(DB, DB_IOC(DB_STRM, 7), unsigned long) +#define STRM_RECLAIM _IOWR(DB, DB_IOC(DB_STRM, 8), unsigned long) +#define STRM_REGISTERNOTIFY _IOWR(DB, DB_IOC(DB_STRM, 9), unsigned long) +#define STRM_SELECT _IOWR(DB, DB_IOC(DB_STRM, 10), unsigned long) + +/* CMM Module */ +#define CMM_ALLOCBUF _IO(DB, DB_IOC(DB_CMM, 0))/* Not Impl'd */ +#define CMM_FREEBUF _IO(DB, DB_IOC(DB_CMM, 1))/* Not Impl'd */ +#define CMM_GETHANDLE _IOR(DB, DB_IOC(DB_CMM, 2), unsigned long) +#define CMM_GETINFO _IOR(DB, DB_IOC(DB_CMM, 3), unsigned long) +#endif /* WCDIOCTL_ */
drivers/dsp/bridge/pmgr/wcd.c +115 -67
200 lines not on this page · raw message
drivers/dsp/bridge/rmgr/drv_interface.c +0 -3
@@ -611,9 +611,6 @@ static long bridge_ioctl(struct file *filp, unsigned int code,GT_0trace (driverTrace,GT_ENTER ," -> driver_ioctl\n" ); -/* Deduct one for the CMD_BASE. */ - code = (code -1 ); - status =copy_from_user (&pBufIn, (union Trapped_Args *)args,sizeof (union Trapped_Args ));
Signature · 1 line
1.6.2.4
Re: [PATCH 6/6] DSPBRIDGE: Use _IOxx macro to define ioctls
Ramirez Luna, Omar had written, on 01/11/2010 02:12 PM, the following:
[...]
Quoted 4 lines
drivers/dsp/bridge/pmgr/wcd.c +0
-0
[...]
Quoted 14 lines
static inline void __cp_fm_usr(void *to, const void
__user*from,drivers/dsp/bridge/pmgr/wcd.c +4
-4@@ -273,13 +286,48 @@ static inline void __cp_to_usr(void __user *to, const void *from,inline DSP_STATUS WCD_CallDevIOCtl (u32 cmd,union Trapped_Args *args,u32 *result,void *pr_ctxt) { -if (cmd <ARRAY_SIZE (WCD_cmdTable)) { -/* make the fxn call via the cmd table */ - *result = (*WCD_cmdTable[cmd].fxn) (args, pr_ctxt); -return DSP_SOK ; +u32 (*ioctl_cmd)(union Trapped_Args *args,void *pr_ctxt); +int i; + +if (_IOC_TYPE (cmd) !=DB ) {
drivers/dsp/bridge/pmgr/wcd.c static inline void __cp_to_usr(void __user *to, const void *from, · line 301
Quoted 10 lines
drivers/dsp/bridge/pmgr/wcd.c +7
-1+pr_err ("%s: Incompatible dspbridge ioctl number\n" , __func__); + goto err; } -return DSP_EINVALIDARG ; +/* Retrieve the fxn via the cmd table */ + i = cmd &DB_IOC_MASK ; +switch (cmd &DB_MODULE_MASK ) { +case DB_MGR : + ioctl_cmd = mgr_cmd[i].fxn;
just realized we have a risk here. if i > sizeof(mgr_cmd), then we will not catch the out of range error. [...]
Signature · 2 lines
Regards, Nishanth Menon
Re: [PATCH 1/6] DSPBRIDGE: replace IO_ADDRESS with ioremap
In reply to Omar Ramirez LunaQuoted 30 lines · Omar Ramirez Luna
Use
ioremap()instead of usingIO_ADDRESSmacro to make it generic.Signed-off-by Omar Ramirez Luna <[email protected]>CC Nishant Menon <[email protected]>CC Hiroshi Doyu <[email protected]>CC Ameya Palande <[email protected]>CC Felipe Contreras <[email protected]>--- drivers/dsp/bridge/services/clk.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-)drivers/dsp/bridge/services/clk.c +3
-4@@ -54,10 +54,9 @@typedef volatile unsigned long REG_UWORD32 ; -#define SSI_Base 0x48058000 - -#define SSI_BASE IO_ADDRESS(SSI_Base) - +#define OMAP_SSI_OFFSET 0x58000 +#define OMAP_SSI_SIZE 0x1000 +#define OMAP_SSI_SYSCONFIG_OFFSET 0x10struct SERVICES_Clk_t {struct clk *clk_handle;
drivers/dsp/bridge/services/clk.c s32 CLK_Get_UseCnt(IN enum SERVICES_ClkId clk_id) · line 359
Quoted 7 lines
drivers/dsp/bridge/services/clk.c +3
-1@@ -355,7 +354,9 @@ s32 CLK_Get_UseCnt(IN enum SERVICES_ClkId clk_id)void SSI_Clk_Prepare (bool FLAG ) {u32 ssi_sysconfig; - ssi_sysconfig =__raw_readl ((SSI_BASE ) +0x10 ); +void __iomem *ssi_base; + + ssi_base =ioremap (L4_34XX_BASE +OMAP_SSI_OFFSET ,OMAP_SSI_SIZE );
Please check the results from ioremap. Currently we're using static mapping, but that may not always be the case in the future.
Regards,
Tony