Re: [PATCH v2 2/2] mach-ux500: Add CG2900 devices

From: Arnd Bergmann
Date: Mon Mar 28 2011 - 10:48:08 EST


On Monday 28 March 2011, Par-Gunnar HJALMDAHL wrote:
> But how should I then do this? As I understood it I was told that I should
> call an init function, but I was not allowed to add any staging folder
> inclusion in the board config makefile. And now I can't do any extern
> declaration either. I don't really see how I could do it then.
>
> The only thing I can think of is to use platform device and driver for
> the cg2900_init. But I wouldn't call that to call an init-function, but that
> might be OK for this purpose?

There are at least two ways to do it:

* As Linus Walleij explained, use an initcall instead of calling a
function from the board init code. "initcall" here refers to the
interfaces from include/linux/init.h, e.g. module_init(). This
will result in the function getting called at module load time,
or at some point during bootup when it's built into the kernel.
This initcall needs to check if you are running on the right board,
using machine_is_xxx().

* As I explained, register a simple platform_device with the resources
for the entire cg2900 device from the board code in a way that
is independent of the actual driver. The driver code can then
register all the subdevices from the cg2900_probe function.
The code in the architecture would consist out of a single
call to platform_device_register_simple() plus the resources.

Either way is fine with me.

Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/