Avoiding #ifdefs
CoDeBrEaKeR
codebreaker28 at yahoo.com
Wed Jan 6 09:18:57 EST 2010
--- On Wed, 1/6/10, Marek Vasut <marek.vasut at gmail.com> wrote:
> From: Marek Vasut <marek.vasut at gmail.com>
> Subject: Re: Avoiding #ifdefs
> To: "CoDeBrEaKeR" <codebreaker28 at yahoo.com>
> Cc: linux-arm at lists.infradead.org
> 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 <marek.vasut at gmail.com>
> wrote:
> > > From: Marek Vasut <marek.vasut at gmail.com>
> > > Subject: Re: Avoiding #ifdefs
> > > To: "CoDeBrEaKeR" <codebreaker28 at yahoo.com>
> > > Cc: linux-arm at lists.infradead.org
> > > 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 <marek.vasut at gmail.com>
> > >
> > > wrote:
> > > > > From: Marek Vasut <marek.vasut at gmail.com>
> > > > > Subject: Re: Avoiding #ifdefs
> > > > > To: linux-arm at lists.infradead.org
> > > > > Cc: "CoDeBrEaKeR" <codebreaker28 at yahoo.com>
> > > > > 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
> > > > > > linux-arm at lists.infradead.org
> > > > > > http://lists.infradead.org/mailman/listinfo/linux-arm
> > > > >
> > > > >
> _______________________________________________
> > > > > linux-arm mailing list
> > > > > linux-arm at lists.infradead.org
> > > > > http://lists.infradead.org/mailman/listinfo/linux-arm
> >
>
> _______________________________________________
> linux-arm mailing list
> linux-arm at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm
>
More information about the linux-arm
mailing list