misc patches (for ioctl and ssi)
Subsystems (2)
v3 cover misc patches (for ioctl and ssi)
Ioctl numbers has changed, this will require an update on libbridge and clients accesing directly to the driver
- IO_ADDRESS is replaced for ioremap.
*v3
- modified:
DSPBRIDGE: replace IO_ADDRESS with ioremap, checking
the result of ioremap
(http://marc.info/?l=linux-omap&m=126324914710445&w=2).
DSPBRIDGE: Use _IOxx macro to define ioctls (as per Nishanth comments)
- new patch:
DSPBRIDGE: remove WCD_Cmd structure
*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 (7):
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
DSPBRIDGE: remove WCD_Cmd structure
arch/arm/plat-omap/include/dspbridge/wcdioctl.h | 184 ++++++++++------- drivers/dsp/bridge/pmgr/wcd.c | 250 ++++++++++++++--------- drivers/dsp/bridge/rmgr/drv_interface.c | 3 - drivers/dsp/bridge/services/clk.c | 27 ++- 4 files changed, 274 insertions(+), 190 deletions(-)
PATCH v3 1/7 DSPBRIDGE: replace IO_ADDRESS with ioremap
Use ioremap() instead of using IO_ADDRESS macro to make it generic.
--- drivers/dsp/bridge/services/clk.c | 19 +++++++++++++------ 1 files changed, 13 insertions(+), 6 deletions(-)
drivers/dsp/bridge/services/clk.c +13 -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,13 @@ 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 (!ssi_base) { +pr_err ("%s: error, SSI not configured\n" , __func__); +return ; + }if (FLAG ) {/* Set Autoidle, SIDLEMode to smart idle, and MIDLEmode to
@@ -368,5 +373,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 v3 2/7 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 );if (!ssi_base) {
@@ -366,14 +370,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 v3 3/7 DSPBRIDGE: Mark unused ioctls as deprecated
Mark unused ioctls as deprecated for future removal and print an error message whenever they are used.
--- 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 v3 4/7 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 v3 5/7 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 v3 6/7 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 | 181 ++++++++++++--------- drivers/dsp/bridge/pmgr/wcd.c | 200 +++++++++++++++-------- drivers/dsp/bridge/rmgr/drv_interface.c | 3 - 3 files changed, 237 insertions(+), 147 deletions(-)
arch/arm/plat-omap/include/dspbridge/wcdioctl.h +102 -79
@@ -437,86 +437,109 @@ union Trapped_Args { } ARGS_UTIL_TESTDLL; } ; -#define CMD_BASE 1 +/* +* Dspbridge Ioctl numbering scheme +* +* 7 0 +* --------------------------------- +* | Module | Ioctl Number | +* --------------------------------- +* | x | x | x | 0 | 0 | 0 | 0 | 0 | +* --------------------------------- +*/ + +/* Ioctl driver identifier */ +#define DB 0xDB + +/* +* 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 + +/* Ioctl module masks */ +#define DB_MGR 0x0 +#define DB_PROC 0x20 +#define DB_NODE 0x40 +#define DB_STRM 0x60 +#define DB_CMM 0x80 + +#define DB_MODULE_SHIFT 5 + +/* Used to calculate the ioctl per dspbridge module */ +#define DB_IOC (module, num) \ + (((module) & DB_MODULE_MASK) | ((num) & DB_IOC_MASK)) +/* Used to get dspbridge ioctl module */ +#define DB_GET_MODULE (cmd) ((cmd) & DB_MODULE_MASK) +/* Used to get dspbridge ioctl number */ +#define DB_GET_IOC (cmd) ((cmd) & 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) +/* MGR_GET_PROC_RES 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) +/* PROC_DETACH 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), 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 +135 -65
226 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
PATCH RESEND v3 6/7 DSPBRIDGE: Use _IOxx macro to define ioctls
Resending with u8 instead of short for size_cmd array
Quoted 20 lines
From: Ramirez Luna, Omar
- Use standard convention to define ioctls.
Currently
0xDBis used as identifier for dspbridge.Discussion:
http://marc.info/?l=linux-omap&m=126297631603035&w=2WARNING:
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.Signed-off-by Omar Ramirez Luna <[email protected]>CC Nishanth Menon <[email protected]>CC Hiroshi Doyu <[email protected]>CC Ameya Palande <[email protected]>CC Felipe Contreras <[email protected]>
Quoted 6 lines
---
arch/arm/plat-omap/include/dspbridge/wcdioctl.h | 181 ++++++++++++--------- drivers/dsp/bridge/pmgr/wcd.c | 200 +++++++++++++++-------- drivers/dsp/bridge/rmgr/drv_interface.c | 3 - 3 files changed, 237 insertions(+), 147 deletions(-)
arch/arm/plat-omap/include/dspbridge/wcdioctl.h +102 -79
@@ -437,86 +437,109 @@ union Trapped_Args { } ARGS_UTIL_TESTDLL; } ; -#define CMD_BASE 1 +/* +* Dspbridge Ioctl numbering scheme +* +* 7 0 +* --------------------------------- +* | Module | Ioctl Number | +* --------------------------------- +* | x | x | x | 0 | 0 | 0 | 0 | 0 | +* --------------------------------- +*/ + +/* Ioctl driver identifier */ +#define DB 0xDB + +/* +* 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 + +/* Ioctl module masks */ +#define DB_MGR 0x0 +#define DB_PROC 0x20 +#define DB_NODE 0x40 +#define DB_STRM 0x60 +#define DB_CMM 0x80 + +#define DB_MODULE_SHIFT 5 + +/* Used to calculate the ioctl per dspbridge module */ +#define DB_IOC (module, num) \ + (((module) & DB_MODULE_MASK) | ((num) & DB_IOC_MASK)) +/* Used to get dspbridge ioctl module */ +#define DB_GET_MODULE (cmd) ((cmd) & DB_MODULE_MASK) +/* Used to get dspbridge ioctl number */ +#define DB_GET_IOC (cmd) ((cmd) & 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) +/* MGR_GET_PROC_RES 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) +/* PROC_DETACH 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), 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 +135 -65
226 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 ));
--
1.6.2.4
PATCH v3 7/7 DSPBRIDGE: remove WCD_Cmd structure
In reply to Omar Ramirez LunaRemove WCD_Cmd structure given that only one member is being used (fxn call), this structure is replaced for a definition of an array of function pointers for each dspbridge ioctl module.
--- drivers/dsp/bridge/pmgr/wcd.c | 134 +++++++++++++++++++--------------------- 1 files changed, 64 insertions(+), 70 deletions(-)
drivers/dsp/bridge/pmgr/wcd.c +64 -70
@@ -147,12 +147,6 @@/* Used to get dspbridge ioctl table */ #define DB_GET_IOC_TABLE (cmd) (DB_GET_MODULE(cmd) >> DB_MODULE_SHIFT) -/* Device IOCtl function pointer */ -struct WCD_Cmd { -u32 (*fxn)(union Trapped_Args *args,void *pr_ctxt); -u32 dwIndex; -} ; -/* ----------------------------------- Globals */ #if GT_TRACE static struct GT_Mask WCD_debugMask = {NULL ,NULL };/* Core VxD Mask */
@@ -167,80 +161,80 @@ static u32 WCD_cRefs;*/ /* MGR wrapper functions */ -static struct WCD_Cmd mgr_cmd[] = { - {MGRWRAP_EnumNode_Info},/* MGR_ENUMNODE_INFO */ - {MGRWRAP_EnumProc_Info},/* MGR_ENUMPROC_INFO */ - {MGRWRAP_RegisterObject},/* MGR_REGISTEROBJECT */ - {MGRWRAP_UnregisterObject},/* MGR_UNREGISTEROBJECT */ - {MGRWRAP_WaitForBridgeEvents},/* MGR_WAIT */ +static u32 (*mgr_cmd[])(union Trapped_Args *args,void *pr_ctxt) = { + MGRWRAP_EnumNode_Info,/* MGR_ENUMNODE_INFO */ + MGRWRAP_EnumProc_Info,/* MGR_ENUMPROC_INFO */ + MGRWRAP_RegisterObject,/* MGR_REGISTEROBJECT */ + MGRWRAP_UnregisterObject,/* MGR_UNREGISTEROBJECT */ + MGRWRAP_WaitForBridgeEvents,/* MGR_WAIT */ #ifndef RES_CLEANUP_DISABLE - {MGRWRAP_GetProcessResourcesInfo},/* MGR_GET_PROC_RES */ + MGRWRAP_GetProcessResourcesInfo,/* MGR_GET_PROC_RES */ #else - {NULL }, +NULL , #endif };/* PROC wrapper functions */ -static struct WCD_Cmd proc_cmd[] = { - {PROCWRAP_Attach},/* PROC_ATTACH */ - {PROCWRAP_Ctrl},/* PROC_CTRL */ - {PROCWRAP_Detach},/* PROC_DETACH */ - {PROCWRAP_EnumNode_Info},/* PROC_ENUMNODE */ - {PROCWRAP_EnumResources},/* PROC_ENUMRESOURCES */ - {PROCWRAP_GetState},/* PROC_GET_STATE */ - {PROCWRAP_GetTrace},/* PROC_GET_TRACE */ - {PROCWRAP_Load},/* PROC_LOAD */ - {PROCWRAP_RegisterNotify},/* PROC_REGISTERNOTIFY */ - {PROCWRAP_Start},/* PROC_START */ - {PROCWRAP_ReserveMemory},/* PROC_RSVMEM */ - {PROCWRAP_UnReserveMemory},/* PROC_UNRSVMEM */ - {PROCWRAP_Map},/* PROC_MAPMEM */ - {PROCWRAP_UnMap},/* PROC_UNMAPMEM */ - {PROCWRAP_FlushMemory},/* PROC_FLUSHMEMORY */ - {PROCWRAP_Stop},/* PROC_STOP */ - {PROCWRAP_InvalidateMemory},/* PROC_INVALIDATEMEMORY */ +static u32 (*proc_cmd[])(union Trapped_Args *args,void *pr_ctxt) = { + PROCWRAP_Attach,/* PROC_ATTACH */ + PROCWRAP_Ctrl,/* PROC_CTRL */ + PROCWRAP_Detach,/* PROC_DETACH */ + PROCWRAP_EnumNode_Info,/* PROC_ENUMNODE */ + PROCWRAP_EnumResources,/* PROC_ENUMRESOURCES */ + PROCWRAP_GetState,/* PROC_GET_STATE */ + PROCWRAP_GetTrace,/* PROC_GET_TRACE */ + PROCWRAP_Load,/* PROC_LOAD */ + PROCWRAP_RegisterNotify,/* PROC_REGISTERNOTIFY */ + PROCWRAP_Start,/* PROC_START */ + PROCWRAP_ReserveMemory,/* PROC_RSVMEM */ + PROCWRAP_UnReserveMemory,/* PROC_UNRSVMEM */ + PROCWRAP_Map,/* PROC_MAPMEM */ + PROCWRAP_UnMap,/* PROC_UNMAPMEM */ + PROCWRAP_FlushMemory,/* PROC_FLUSHMEMORY */ + PROCWRAP_Stop,/* PROC_STOP */ + PROCWRAP_InvalidateMemory,/* PROC_INVALIDATEMEMORY */ };/* NODE wrapper functions */ -static struct WCD_Cmd node_cmd[] = { - {NODEWRAP_Allocate},/* NODE_ALLOCATE */ - {NODEWRAP_AllocMsgBuf},/* NODE_ALLOCMSGBUF */ - {NODEWRAP_ChangePriority},/* NODE_CHANGEPRIORITY */ - {NODEWRAP_Connect},/* NODE_CONNECT */ - {NODEWRAP_Create},/* NODE_CREATE */ - {NODEWRAP_Delete},/* NODE_DELETE */ - {NODEWRAP_FreeMsgBuf},/* NODE_FREEMSGBUF */ - {NODEWRAP_GetAttr},/* NODE_GETATTR */ - {NODEWRAP_GetMessage},/* NODE_GETMESSAGE */ - {NODEWRAP_Pause},/* NODE_PAUSE */ - {NODEWRAP_PutMessage},/* NODE_PUTMESSAGE */ - {NODEWRAP_RegisterNotify},/* NODE_REGISTERNOTIFY */ - {NODEWRAP_Run},/* NODE_RUN */ - {NODEWRAP_Terminate},/* NODE_TERMINATE */ - {NODEWRAP_GetUUIDProps},/* NODE_GETUUIDPROPS */ +static u32 (*node_cmd[])(union Trapped_Args *args,void *pr_ctxt) = { + NODEWRAP_Allocate,/* NODE_ALLOCATE */ + NODEWRAP_AllocMsgBuf,/* NODE_ALLOCMSGBUF */ + NODEWRAP_ChangePriority,/* NODE_CHANGEPRIORITY */ + NODEWRAP_Connect,/* NODE_CONNECT */ + NODEWRAP_Create,/* NODE_CREATE */ + NODEWRAP_Delete,/* NODE_DELETE */ + NODEWRAP_FreeMsgBuf,/* NODE_FREEMSGBUF */ + NODEWRAP_GetAttr,/* NODE_GETATTR */ + NODEWRAP_GetMessage,/* NODE_GETMESSAGE */ + NODEWRAP_Pause,/* NODE_PAUSE */ + NODEWRAP_PutMessage,/* NODE_PUTMESSAGE */ + NODEWRAP_RegisterNotify,/* NODE_REGISTERNOTIFY */ + NODEWRAP_Run,/* NODE_RUN */ + NODEWRAP_Terminate,/* NODE_TERMINATE */ + NODEWRAP_GetUUIDProps,/* NODE_GETUUIDPROPS */ };/* STRM wrapper functions */ -static struct WCD_Cmd strm_cmd[] = { - {STRMWRAP_AllocateBuffer},/* STRM_ALLOCATEBUFFER */ - {STRMWRAP_Close},/* STRM_CLOSE */ - {STRMWRAP_FreeBuffer},/* STRM_FREEBUFFER */ - {STRMWRAP_GetEventHandle},/* STRM_GETEVENTHANDLE */ - {STRMWRAP_GetInfo},/* STRM_GETINFO */ - {STRMWRAP_Idle},/* STRM_IDLE */ - {STRMWRAP_Issue},/* STRM_ISSUE */ - {STRMWRAP_Open},/* STRM_OPEN */ - {STRMWRAP_Reclaim},/* STRM_RECLAIM */ - {STRMWRAP_RegisterNotify},/* STRM_REGISTERNOTIFY */ - {STRMWRAP_Select},/* STRM_SELECT */ +static u32 (*strm_cmd[])(union Trapped_Args *args,void *pr_ctxt) = { + STRMWRAP_AllocateBuffer,/* STRM_ALLOCATEBUFFER */ + STRMWRAP_Close,/* STRM_CLOSE */ + STRMWRAP_FreeBuffer,/* STRM_FREEBUFFER */ + STRMWRAP_GetEventHandle,/* STRM_GETEVENTHANDLE */ + STRMWRAP_GetInfo,/* STRM_GETINFO */ + STRMWRAP_Idle,/* STRM_IDLE */ + STRMWRAP_Issue,/* STRM_ISSUE */ + STRMWRAP_Open,/* STRM_OPEN */ + STRMWRAP_Reclaim,/* STRM_RECLAIM */ + STRMWRAP_RegisterNotify,/* STRM_REGISTERNOTIFY */ + STRMWRAP_Select,/* STRM_SELECT */ };/* CMM wrapper functions */ -static struct WCD_Cmd cmm_cmd[] = { - {CMMWRAP_CallocBuf},/* CMM_ALLOCBUF */ - {CMMWRAP_FreeBuf},/* CMM_FREEBUF */ - {CMMWRAP_GetHandle},/* CMM_GETHANDLE */ - {CMMWRAP_GetInfo},/* CMM_GETINFO */ +static u32 (*cmm_cmd[])(union Trapped_Args *args,void *pr_ctxt) = { + CMMWRAP_CallocBuf,/* CMM_ALLOCBUF */ + CMMWRAP_FreeBuf,/* CMM_FREEBUF */ + CMMWRAP_GetHandle,/* CMM_GETHANDLE */ + CMMWRAP_GetInfo,/* CMM_GETINFO */ };/* Array used to store ioctl table sizes. It can hold up to 8 entries */
@@ -323,19 +317,19 @@ inline DSP_STATUS WCD_CallDevIOCtl(u32 cmd, union Trapped_Args *args,switch (DB_GET_MODULE (cmd)) {case DB_MGR : - ioctl_cmd = mgr_cmd[i].fxn; + ioctl_cmd = mgr_cmd[i];break ;case DB_PROC : - ioctl_cmd = proc_cmd[i].fxn; + ioctl_cmd = proc_cmd[i];break ;case DB_NODE : - ioctl_cmd = node_cmd[i].fxn; + ioctl_cmd = node_cmd[i];break ;case DB_STRM : - ioctl_cmd = strm_cmd[i].fxn; + ioctl_cmd = strm_cmd[i];break ;case DB_CMM : - ioctl_cmd = cmm_cmd[i].fxn; + ioctl_cmd = cmm_cmd[i];break ; }
Signature · 1 line
1.6.2.4
Re: [PATCH v3 7/7] DSPBRIDGE: remove WCD_Cmd structure
Ramirez Luna, Omar had written, on 01/11/2010 07:00 PM, the following:
Quoted 32 lines
Remove
WCD_Cmdstructure given that only one member is being used (fxn call), this structure is replaced for a definition of an array of function pointers for each dspbridge ioctl module.Signed-off-by Omar Ramirez Luna <[email protected]>CC Nishanth Menon <[email protected]>CC Hiroshi Doyu <[email protected]>CC Ameya Palande <[email protected]>CC Felipe Contreras <[email protected]>--- drivers/dsp/bridge/pmgr/wcd.c | 134 +++++++++++++++++++--------------------- 1 files changed, 64 insertions(+), 70 deletions(-)drivers/dsp/bridge/pmgr/wcd.c +0
-6@@ -147,12 +147,6 @@/* Used to get dspbridge ioctl table */ #define DB_GET_IOC_TABLE (cmd) (DB_GET_MODULE(cmd) >> DB_MODULE_SHIFT) -/* Device IOCtl function pointer */ -struct WCD_Cmd { -u32 (*fxn)(union Trapped_Args *args,void *pr_ctxt); -u32 dwIndex; -} ; -/* ----------------------------------- Globals */ #if GT_TRACE static struct GT_Mask WCD_debugMask = {NULL ,NULL };/* Core VxD Mask */
drivers/dsp/bridge/pmgr/wcd.c static u32 WCD_cRefs; · line 164
Quoted 10 lines
drivers/dsp/bridge/pmgr/wcd.c +1
-6@@ -167,80 +161,80 @@ static u32 WCD_cRefs;*/ /* MGR wrapper functions */ -static struct WCD_Cmd mgr_cmd[] = { - {MGRWRAP_EnumNode_Info},/* MGR_ENUMNODE_INFO */ - {MGRWRAP_EnumProc_Info},/* MGR_ENUMPROC_INFO */ - {MGRWRAP_RegisterObject},/* MGR_REGISTEROBJECT */ - {MGRWRAP_UnregisterObject},/* MGR_UNREGISTEROBJECT */ - {MGRWRAP_WaitForBridgeEvents},/* MGR_WAIT */ +static u32 (*mgr_cmd[])(union Trapped_Args *args,void *pr_ctxt) = {
agreed that we dont need dwIndex anymore and struct wrapper is an overhead, but, just being a nitpick again, but is'nt typedef a necessary evil at this point to ensure that all cmd_ function pointers are of the same style for each of the arrays?
Signature · 2 lines
Regards, Nishanth Menon
Ramirez Luna, Omar
AppliedRE: [PATCH v3 6/7] DSPBRIDGE: Use _IOxx macro to define ioctls
In reply to Omar Ramirez LunaQuoted 19 lines
From: Ramirez Luna, Omar
Sent: Monday, January 11, 2010 7:01 PM
To: linux-omap
Cc: Ramirez Luna, Omar; Menon, Nishanth; Hiroshi Doyu; Ameya Palande; Felipe Contreras
Subject: [PATCH v3 6/7] DSPBRIDGE: Use_IOxxmacro to define ioctls- Use standard convention to define ioctls.
Currently
0xDBis used as identifier for dspbridge.Discussion:
http://marc.info/?l=linux-omap&m=126297631603035&w=2WARNING:
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.
Quoted 7 lines
Signed-off-by Omar Ramirez Luna <[email protected]>---
arch/arm/plat-omap/include/dspbridge/wcdioctl.h | 181 ++++++++++++--------- drivers/dsp/bridge/pmgr/wcd.c | 200 +++++++++++++++-------- drivers/dsp/bridge/rmgr/drv_interface.c | 3 - 3 files changed, 237 insertions(+), 147 deletions(-)
Pushed to dspbridge
- omar
Ramirez Luna, Omar
AppliedRE: [PATCH v3 5/7] DSPBRIDGE: Rename pResult to result for WCD_CallDevIOCtl
In reply to Omar Ramirez LunaQuoted 6 lines
From: Ramirez Luna, Omar
Sent: Monday, January 11, 2010 7:01 PM
To: linux-omap
Cc: Ramirez Luna, Omar; Menon, Nishanth; Hiroshi Doyu; Ameya Palande; Felipe Contreras
Subject: [PATCH v3 5/7] DSPBRIDGE: Rename pResult to result forWCD_CallDevIOCtl
Quoted 7 lines
Trivial cleanup, rename pResult to result for
WCD_CallDevIOCtlSigned-off-by Omar Ramirez Luna <[email protected]>---
drivers/dsp/bridge/pmgr/wcd.c| 4 ++--1 files changed, 2 insertions(+), 2 deletions(-)
Pushed to dspbridge
- omar
Ramirez Luna, Omar
AppliedRE: [PATCH v3 4/7] DSPBRIDGE: remove ioctl runtime check
In reply to Omar Ramirez LunaQuoted 6 lines
From: Ramirez Luna, Omar
Sent: Monday, January 11, 2010 7:01 PM
To: linux-omap
Cc: Ramirez Luna, Omar; Menon, Nishanth; Hiroshi Doyu; Ameya Palande; Felipe Contreras
Subject: [PATCH v3 4/7] DSPBRIDGE: remove ioctl runtime check
Quoted 8 lines
This patch removes the runtime check of device
ioctl array.Signed-off-by Omar Ramirez Luna <[email protected]>---
drivers/dsp/bridge/pmgr/wcd.c| 6 ------1 files changed, 0 insertions(+), 6 deletions(-)
Pushed to dspbridge
- omar
Ramirez Luna, Omar
AppliedRE: [PATCH v3 3/7] DSPBRIDGE: Mark unused ioctls as deprecated
In reply to Omar Ramirez LunaQuoted 6 lines
From: Ramirez Luna, Omar
Sent: Monday, January 11, 2010 7:01 PM
To: linux-omap
Cc: Ramirez Luna, Omar; Menon, Nishanth; Hiroshi Doyu; Ameya Palande; Felipe Contreras
Subject: [PATCH v3 3/7] DSPBRIDGE: Mark unused ioctls as deprecated
Quoted 9 lines
Mark unused ioctls as deprecated for future removal and print an error message whenever they are used.
Signed-off-by Omar Ramirez Luna <[email protected]>---
arch/arm/plat-omap/include/dspbridge/wcdioctl.h | 11 ++++-- drivers/dsp/bridge/pmgr/wcd.c | 38 +++++++++-------------- 2 files changed, 22 insertions(+), 27 deletions(-)
Pushed to dspbridge
- omar
Ramirez Luna, Omar
AppliedRE: [PATCH v3 2/7] DSPBRIDGE: Replace magic numbers in SSI configuration
In reply to Omar Ramirez LunaQuoted 6 lines
From: Ramirez Luna, Omar
Sent: Monday, January 11, 2010 7:01 PM
To: linux-omap
Cc: Ramirez Luna, Omar; Menon, Nishanth; Hiroshi Doyu; Ameya Palande; Felipe Contreras
Subject: [PATCH v3 2/7] DSPBRIDGE: Replace magic numbers in SSI configuration
Quoted 8 lines
Rename
ssi_sysconfigvariable and replace the usage of magic numbers while updating SSI configuration.Signed-off-by Omar Ramirez Luna <[email protected]>---
drivers/dsp/bridge/services/clk.c| 12 ++++++++----1 files changed, 8 insertions(+), 4 deletions(-)
Pushed to dspbridge
- omar
Ramirez Luna, Omar
AppliedRE: [PATCH v3 1/7] DSPBRIDGE: replace IO_ADDRESS with ioremap
In reply to Omar Ramirez LunaQuoted 6 lines
From: Ramirez Luna, Omar
Sent: Monday, January 11, 2010 7:01 PM
To: linux-omap
Cc: Ramirez Luna, Omar; Tony Lindgren; Menon, Nishanth; Hiroshi Doyu; Ameya Palande; Felipe Contreras
Subject: [PATCH v3 1/7] DSPBRIDGE: replaceIO_ADDRESSwith ioremap
Quoted 7 lines
Use
ioremap()instead of usingIO_ADDRESSmacro to make it generic.Signed-off-by Omar Ramirez Luna <[email protected]>---
drivers/dsp/bridge/services/clk.c| 19 +++++++++++++------1 files changed, 13 insertions(+), 6 deletions(-)
Pushed to dspbridge
- omar
Hi Omar,
Quoted 13 lines · ext Omar Ramirez Luna
Ioctl numbers has changed, this will require an update on libbridge and clients accesing directly to the driver
-
IO_ADDRESSis replaced for ioremap.*v3
- modified:
DSPBRIDGE: replaceIO_ADDRESSwith ioremap, checking
the result of ioremap
(http://marc.info/?l=linux-omap&m=126324914710445&w=2).
DSPBRIDGE: Use_IOxxmacro to define ioctls (as per Nishanth comments)
- new patch:
DSPBRIDGE: removeWCD_Cmdstructure
Quoted 8 lines
*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 tocpufreq_register_notifierfor OPP changes
DSPBRIDGE: Fix header locations mach to plat
Where is the bridge-pm repository?
I am trying to compile dspbridge branch with HEAD commit as: DSPBRIDGE:
Use _IOxx macro to define ioctls. But compilation fails because of following missing commit:
DSPBRIDGE: Fix header locations mach to plat
Can you move this commit from bridge-pm to dspbridge so that dspbridge is in compilable state?
Thanks!
Cheers,
Ameya.
Hi Ameya,
Quoted 32 lines
Hi Omar,
Quoted 15 lines · ext Omar Ramirez Luna
Ioctl numbers has changed, this will require an update on libbridge and clients accesing directly to the driver
-
IO_ADDRESSis replaced for ioremap.*v3
- modified:
DSPBRIDGE: replaceIO_ADDRESSwith ioremap, checking the result of ioremap
(http://marc.info/?l=linux-omap&m=126324914710445&w=2).
DSPBRIDGE: Use_IOxxmacro to define ioctls (as per Nishanth
comments)
- new patch:
DSPBRIDGE: removeWCD_CmdstructureQuoted 8 lines
*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 tocpufreq_register_notifierfor OPP changes
DSPBRIDGE: Fix header locations mach to platWhere is the bridge-pm repository?
I am trying to compile dspbridge branch with HEAD commit as: DSPBRIDGE:
Use_IOxxmacro to define ioctls. But compilation fails because of following missing commit:
Quoted 4 lines
DSPBRIDGE: Fix header locations mach to plat
Can you move this commit from bridge-pm to dspbridge so that dspbridge is in compilable state?
This will break any attempt to compile dspbridge as is on LO.
I have created dspbridge-pm, however patch set to compile this branch has just been sent as nobody reviewed it yet.
For the patches please refer to: http://marc.info/?l=linux-omap&m=126360672728600&w=2
Dspbridge-pm at dev.omapzoom.org
http://dev.omapzoom.org/?p=tidspbridge/kernel-dspbridge.git;a=shortlog;h=refs/heads/dspbridge-pm
The branch was created on top of pm-2.6.32.
Best Regards,
omar