Re: Avoiding #ifdefs

CoDeBrEaKeR <[email protected]>
Newsgroups gmane.linux.ports.arm.general
Message-ID <[email protected]>

--- On Wed, 1/6/10, Marek Vasut <[email protected]> wrote:

> From: Marek Vasut <[email protected]>
> Subject: Re: Avoiding #ifdefs
> To: "CoDeBrEaKeR" <[email protected]>
> Cc: [email protected]
> Date: Wednesday, January 6, 2010, 7:02 PM
> Dne St 6. ledna 2010 09:38:41
> CoDeBrEaKeR napsal(a):
> > --- On Wed, 1/6/10, Marek Vasut <[email protected]>
> wrote:
> > > From: Marek Vasut <[email protected]>
> > > Subject: Re: Avoiding #ifdefs
> > > To: "CoDeBrEaKeR" <[email protected]>
> > > Cc: [email protected]
> > > Date: Wednesday, January 6, 2010, 1:32 PM
> > > Dne St 6. ledna 2010 07:46:59
> > >
> > > CoDeBrEaKeR napsal(a):
> > > > Thanks,
> > > >
> > > >  But the stucture am using is pretty
> insanely
> > >
> > > nested.
> > >
> > > So? Why don't you show us the real code? (please
> also stop
> > > top-posting).
> > 
> > sorry about top posting. here's the code(directly
> pasting it
> > from the patch)
> > 
> > +static struct omap_dss_device zoom_tv_device = {
> > +    .name       
>            = "tv",
> > +    .driver_name     
>       = "venc",
> > +    .type       
>            =
> OMAP_DISPLAY_TYPE_VENC,
> > +#ifdef CONFIG_MACH_OMAP_3630SDP
> > +    .phy.venc.type     
>     = OMAP_DSS_VENC_TYPE_SVIDEO,
> > +#else
> > +    .phy.venc.type     
>     = OMAP_DSS_VENC_TYPE_COMPOSITE,
> > +#endif
> > +    .platform_enable   
>     = zoom_panel_enable_tv,
> > +    .platform_disable   
>    = zoom_panel_disable_tv,
> > +};
> > +
> > +static struct omap_dss_device *zoom_dss_devices[] =
> {
> > +    &zoom_lcd_device,
> > +    &zoom_tv_device,
> > +};
> > +
> > +static struct omap_dss_board_info zoom_dss_data = {
> > +    .num_devices =
> ARRAY_SIZE(zoom_dss_devices),
> > +    .devices = zoom_dss_devices,
> > +    .default_device =
> &zoom_lcd_device,
> > +};
> > +
> > +static struct platform_device zoom_dss_device = {
> > +    .name       
>   = "omapdss",
> > +    .id       
>     = -1,
> > +    .dev       
>     = {
> > +        .platform_data
> = &zoom_dss_data,
> > +    },
> > +};
> > 
> > ifdefs here is what i want to avoid.
> > 
> > +#ifdef CONFIG_MACH_OMAP_3630SDP
> > +    .phy.venc.type     
>     = OMAP_DSS_VENC_TYPE_SVIDEO,
> > +#else
> > +    .phy.venc.type     
>     = OMAP_DSS_VENC_TYPE_COMPOSITE,
> > +#endif
> > 
> 
> well in the machine init ... 
> if (machine_is_omap_3630sdp())

the problem is we don't have machine_is_omap_3630sdp(),
what's available is something like machine_is_omap_3630().

And there are diff types of boards which is why the #ifdef.

>     zoom_device.phy.venc.type = OMAP_DSS...
> else
>     DTTO
> 
> what's the problem ?
> > 
> > ~A
> > 
> > > > ~A
> > > >
> > > > --- On Wed, 1/6/10, Marek Vasut <[email protected]>
> > >
> > > wrote:
> > > > > From: Marek Vasut <[email protected]>
> > > > > Subject: Re: Avoiding #ifdefs
> > > > > To: [email protected]
> > > > > Cc: "CoDeBrEaKeR" <[email protected]>
> > > > > Date: Wednesday, January 6, 2010, 11:53
> AM
> > > > > Dne St 6. ledna 2010 07:04:37
> > > > >
> > > > > CoDeBrEaKeR napsal(a):
> > > > > > Most of the times its is easy to
> start
> > >
> > > having a lot of
> > >
> > > > > #ifdef statements in
> > > > >
> > > > > >  your code. Since this is not
> a proper
> > >
> > > thing to
> > >
> > > > > do, placing the #ifdef in a
> > > > >
> > > > > >  header file would be the
> usual
> > >
> > > suggestion. well,
> > >
> > > > > i understand this as far
> > > > >
> > > > > >  as #ifdefs in functions are
> concerned.
> > >
> > > How about
> > >
> > > > > structures?
> > > > >
> > > > > > for Ex:
> > > > > >
> > > > > >  static struct something = {
> > > > > > 
>    .name   
> > >
> > >    
> > >
> > > > >         
>   =
> > >
> > > "xyz",
> > >
> > > > > > 
>    .driver_name 
> > >
> > >    
> > >
> > > > >       =
> "something",
> > > > >
> > > > > > #ifdef SOME_ARCH_TYPE
> > > > > > 
>    .bla   
> > >
> > >    
> > >
> > > > >         
> > >
> > >    = DO_THIS,
> > >
> > > > > > #else
> > > > > > 
>    .bla   
> > >
> > >    
> > >
> > > > >         
> > >
> > >    =
> > >
> > > > > DO_SOMETHING_ELSE,
> > > > >
> > > > > > #endif
> > > > > > };
> > > > > >
> > > > > > How do i avoid #ifdef here, any
> idea??
> > > > >
> > > > > If you want to do some run-time
> detection, then
> > >
> > > do so and
> > >
> > > > > assign 'bla' at
> > > > > runtime...
> > > > > if (x)
> > > > >  something.bla = somefn;
> > > > > else
> > > > > ...
> > > > >
> > > > > > Thanks.
> > > > > >
> > > > > > ~A
> > >
> > > _______________________________________________
> > >
> > > > > > linux-arm mailing list
> > > > > > [email protected]
> > > > > > http://lists.infradead.org/mailman/listinfo/linux-arm
> > > > >
> > > > >
> _______________________________________________
> > > > > linux-arm mailing list
> > > > > [email protected]
> > > > > http://lists.infradead.org/mailman/listinfo/linux-arm
> > 
> 
> _______________________________________________
> linux-arm mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.