Thread (45 messages) 45 messages, 9 authors, 2010-11-25

Re: [PATCH 01/10] MCDE: Add hardware abstraction layer

From: Joe Perches <joe@perches.com>
Date: 2010-11-17 16:01:20
Also in: linux-arm-kernel, linux-media

On Wed, 2010-11-17 at 10:55 +0100, Arnd Bergmann wrote:
On Tuesday 16 November 2010, Joe Perches wrote:
quoted
static inline u32 MCDE_channel_path(u32 chnl, u32 fifo, u32 type, u32 ifc, u32 link)
{
        return ((chnl << 16) |
                (fifo << 12) |
                (type << 8) |
                (ifc << 4) |
                (link << 0));
}

#define SET_ENUM_MCDE_CHNLPATH(chnl, fifo, var, type, ifc, link)        \
        MCDE_CHNLPATH_CHNL##chnl##_FIFO##fifo##_##var =                 \
                MCDE_channel_path(MCDE_CHNL_##chnl,                     \
                                  MCDE_FIFO_##fifo,                     \
                                  MCDE_PORTTYPE_##type,                 \
                                  ifc,                                  \
                                  link)

enum mcde_chnl_path {
        /* Channel A */
        SET_ENUM_MCDE_CHNLPATH(A, A, DPI_0,             DPI, 0, 0),
        SET_ENUM_MCDE_CHNLPATH(A, A, DSI_IFC0_0,        DSI, 0, 0),
        SET_ENUM_MCDE_CHNLPATH(A, A, DSI_IFC0_1,        DSI, 0, 1),
While more readable, this has two significant problems:

* You cannot use the result of an inline function in an enum definition
* It hides the name of the identifier, making it impossible to use grep
  or ctags to find the definition when you only know the name
True, though I would avoid that problem by using a get function/macro
and not use an enum at all.

There are just 4 items of interest here.  chan, fifo, #1, #2.
Encoding those in the variable name is a bit of a visual chase and
a bit mind numbing to read I think.
 
The easiest way is probably to get rid of the macros entirely here
and just define the values as hex, with a comment exmplaining what the
digits mean.
That'd be fine too.

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help