endif
 
 config ARCH_GUMSTIX
-       bool "Gumstix XScale boards"
+       bool "Gumstix XScale 255 boards"
+       select PXA25x
        help
-         Say Y here if you intend to run this kernel on a
-         Gumstix Full Function Minature Computer.
+         Say Y here if you intend to run this kernel on
+         Basix, Connex, ws-200ax, ws-400ax systems
 
-config MACH_GUMSTIX_F
-       bool "Basix, Connex, ws-200ax, ws-400ax systems"
+choice
+       prompt "Gumstix Carrier/Expansion Board"
        depends on ARCH_GUMSTIX
-       select PXA25x
+
+config GUMSTIX_AM200EPD
+       bool "Enable AM200EPD board support"
+
+endchoice
 
 config ARCH_LUBBOCK
        bool "Intel DBPXA250 Development Platform"
 
 endchoice
 
-config MACH_AM200EPD
-       depends on MACH_GUMSTIX_F
-       bool "Enable AM200EPD board support"
-
 config PXA_EZX
        bool "Motorola EZX Platform"
        select PXA27x
 
 
 # Specific board support
 obj-$(CONFIG_ARCH_GUMSTIX)     += gumstix.o
-obj-$(CONFIG_MACH_AM200EPD)    += am200epd.o
+obj-$(CONFIG_GUMSTIX_AM200EPD) += am200epd.o
 obj-$(CONFIG_ARCH_LUBBOCK)     += lubbock.o
 obj-$(CONFIG_MACH_LOGICPD_PXA270) += lpd270.o
 obj-$(CONFIG_MACH_MAINSTONE)   += mainstone.o
 
        .cleanup                = am200_cleanup,
 };
 
-static int __init am200_init(void)
+int __init am200_init(void)
 {
        int ret;
 
 module_param(panel_type, uint, 0);
 MODULE_PARM_DESC(panel_type, "Select the panel type: 6, 8, 97");
 
-module_init(am200_init);
-
 MODULE_DESCRIPTION("board driver for am200 metronome epd kit");
 MODULE_AUTHOR("Jaya Kumar");
 MODULE_LICENSE("GPL");
 
        GPIO16_GPIO,
 };
 
+int __attribute__((weak)) am200_init(void)
+{
+       return 0;
+}
+
+static void __init carrier_board_init(void)
+{
+       /*
+        * put carrier/expansion board init here if
+        * they cannot be detected programatically
+        */
+       am200_init();
+}
+
 static void __init gumstix_init(void)
 {
        pxa2xx_mfp_config(ARRAY_AND_SIZE(gumstix_pin_config));
        gumstix_udc_init();
        gumstix_mmc_init();
        (void) platform_add_devices(devices, ARRAY_SIZE(devices));
+       carrier_board_init();
 }
 
 MACHINE_START(GUMSTIX, "Gumstix")
 
 #define GPIO26_PRDY_nBSY_MD            (GPIO26_PRDY_nBSY | GPIO_IN)
 #define GPIO27_PRDY_nBSY_MD            (GPIO27_PRDY_nBSY | GPIO_IN)
 #define GPIO36_nCD_MD                  (GPIO36_nCD | GPIO_IN)
+
+/* for expansion boards that can't be programatically detected */
+extern int am200_init(void);
+