machdir-$(CONFIG_SH_TITAN)                     += mach-titan
 machdir-$(CONFIG_SH_LBOX_RE2)                  += mach-lboxre2
 machdir-$(CONFIG_SH_CAYMAN)                    += mach-cayman
+machdir-$(CONFIG_SH_RSK)                       += mach-rsk
 
 ifneq ($(machdir-y),)
 core-y += $(addprefix arch/sh/boards/, \
 
          Select RTS7751R2D if configuring for a Renesas Technology
          Sales SH-Graphics board.
 
-config SH_RSK7201
-       bool "RSK7201"
-       depends on CPU_SUBTYPE_SH7201
-
-config SH_RSK7203
-       bool "RSK7203"
-       select GENERIC_GPIO
-       depends on CPU_SUBTYPE_SH7203
+config SH_RSK
+       bool "Renesas Starter Kit"
+       depends on CPU_SUBTYPE_SH7201 || CPU_SUBTYPE_SH7203
+       help
+        Select this option if configuring for any of the RSK+ MCU
+        evaluation platforms.
 
 config SH_SDK7780
        bool "SDK7780R3"
 source "arch/sh/boards/mach-highlander/Kconfig"
 source "arch/sh/boards/mach-sdk7780/Kconfig"
 source "arch/sh/boards/mach-migor/Kconfig"
+source "arch/sh/boards/mach-rsk/Kconfig"
 
 if SH_MAGIC_PANEL_R2
 
 
 #
 obj-$(CONFIG_SH_AP325RXA)      += board-ap325rxa.o
 obj-$(CONFIG_SH_MAGIC_PANEL_R2)        += board-magicpanelr2.o
-obj-$(CONFIG_SH_RSK7201)       += board-rsk7201.o
-obj-$(CONFIG_SH_RSK7203)       += board-rsk7203.o
 obj-$(CONFIG_SH_SH7785LCR)     += board-sh7785lcr.o
 obj-$(CONFIG_SH_SHMIN)         += board-shmin.o
 obj-$(CONFIG_SH_EDOSK7760)     += board-edosk7760.o
 
--- /dev/null
+if SH_RSK
+
+choice
+       prompt "RSK+ options"
+       default SH_RSK7203
+
+config SH_RSK7201
+       bool "RSK7201"
+       depends on CPU_SUBTYPE_SH7201
+
+config SH_RSK7203
+       bool "RSK7203"
+       select GENERIC_GPIO
+       depends on CPU_SUBTYPE_SH7203
+
+endchoice
+
+endif
 
--- /dev/null
+obj-y                          := setup.o
+obj-$(CONFIG_SH_RSK7203)       += devices-rsk7203.o
 
        },
 };
 
-static const char *probes[] = { "cmdlinepart", NULL };
-
-static struct mtd_partition *parsed_partitions;
-
-static struct mtd_partition rsk7203_partitions[] = {
-       {
-               .name           = "Bootloader",
-               .offset         = 0x00000000,
-               .size           = 0x00040000,
-               .mask_flags     = MTD_WRITEABLE,
-       }, {
-               .name           = "Kernel",
-               .offset         = MTDPART_OFS_NXTBLK,
-               .size           = 0x001c0000,
-       }, {
-               .name           = "Flash_FS",
-               .offset         = MTDPART_OFS_NXTBLK,
-               .size           = MTDPART_SIZ_FULL,
-       }
-};
-
-static struct physmap_flash_data flash_data = {
-       .width          = 2,
-};
-
-static struct resource flash_resource = {
-       .start          = 0x20000000,
-       .end            = 0x20400000,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device flash_device = {
-       .name           = "physmap-flash",
-       .id             = -1,
-       .resource       = &flash_resource,
-       .num_resources  = 1,
-       .dev            = {
-               .platform_data = &flash_data,
-       },
-};
-
-static struct mtd_info *flash_mtd;
-
-static struct map_info rsk7203_flash_map = {
-       .name           = "RSK+ Flash",
-       .size           = 0x400000,
-       .bankwidth      = 2,
-};
-
-static void __init set_mtd_partitions(void)
-{
-       int nr_parts = 0;
-
-       simple_map_init(&rsk7203_flash_map);
-       flash_mtd = do_map_probe("cfi_probe", &rsk7203_flash_map);
-       nr_parts = parse_mtd_partitions(flash_mtd, probes,
-                                       &parsed_partitions, 0);
-       /* If there is no partition table, used the hard coded table */
-       if (nr_parts <= 0) {
-               flash_data.parts = rsk7203_partitions;
-               flash_data.nr_parts = ARRAY_SIZE(rsk7203_partitions);
-       } else {
-               flash_data.nr_parts = nr_parts;
-               flash_data.parts = parsed_partitions;
-       }
-}
-
 static struct gpio_led rsk7203_gpio_leds[] = {
        {
                .name                   = "green",
 
 static struct platform_device *rsk7203_devices[] __initdata = {
        &smc911x_device,
-       &flash_device,
        &led_device,
 };
 
        gpio_request(GPIO_FN_TXD0, NULL);
        gpio_request(GPIO_FN_RXD0, NULL);
 
-       set_mtd_partitions();
        return platform_add_devices(rsk7203_devices,
                                    ARRAY_SIZE(rsk7203_devices));
 }
 device_initcall(rsk7203_devices_setup);
-
-/*
- * The Machine Vector
- */
-static struct sh_machine_vector mv_rsk7203 __initmv = {
-       .mv_name        = "RSK+7203",
-};
 
 /*
- * Renesas Technology Europe RSK+ 7201 Support.
+ * Renesas Technology Europe RSK+ Support.
  *
+ * Copyright (C) 2008 Paul Mundt
  * Copyright (C) 2008 Peter Griffin <pgriffin@mpc-data.co.uk>
  *
  * This file is subject to the terms and conditions of the GNU General Public
 
 static struct mtd_partition *parsed_partitions;
 
-static struct mtd_partition rsk7201_partitions[] = {
+static struct mtd_partition rsk_partitions[] = {
        {
                .name           = "Bootloader",
                .offset         = 0x00000000,
 
 static struct mtd_info *flash_mtd;
 
-static struct map_info rsk7201_flash_map = {
+static struct map_info rsk_flash_map = {
        .name           = "RSK+ Flash",
        .size           = 0x400000,
        .bankwidth      = 2,
 {
        int nr_parts = 0;
 
-       simple_map_init(&rsk7201_flash_map);
-       flash_mtd = do_map_probe("cfi_probe", &rsk7201_flash_map);
+       simple_map_init(&rsk_flash_map);
+       flash_mtd = do_map_probe("cfi_probe", &rsk_flash_map);
        nr_parts = parse_mtd_partitions(flash_mtd, probes,
                                        &parsed_partitions, 0);
        /* If there is no partition table, used the hard coded table */
        if (nr_parts <= 0) {
-               flash_data.parts = rsk7201_partitions;
-               flash_data.nr_parts = ARRAY_SIZE(rsk7201_partitions);
+               flash_data.parts = rsk_partitions;
+               flash_data.nr_parts = ARRAY_SIZE(rsk_partitions);
        } else {
                flash_data.nr_parts = nr_parts;
                flash_data.parts = parsed_partitions;
        }
 }
 
-static struct platform_device *rsk7201_devices[] __initdata = {
+static struct platform_device *rsk_devices[] __initdata = {
        &flash_device,
 };
 
-static int __init rsk7201_devices_setup(void)
+static int __init rsk_devices_setup(void)
 {
        set_mtd_partitions();
-       return platform_add_devices(rsk7201_devices,
-                                   ARRAY_SIZE(rsk7201_devices));
+       return platform_add_devices(rsk_devices,
+                                   ARRAY_SIZE(rsk_devices));
 }
-device_initcall(rsk7201_devices_setup);
+device_initcall(rsk_devices_setup);
 
 /*
  * The Machine Vector
  */
-static struct sh_machine_vector mv_rsk7201 __initmv = {
-       .mv_name        = "RSK+7201",
+static struct sh_machine_vector mv_rsk __initmv = {
+       .mv_name        = "RSK+",
 };
 
 SE                     SH_SOLUTION_ENGINE
 HIGHLANDER             SH_HIGHLANDER
 RTS7751R2D             SH_RTS7751R2D
+RSK                    SH_RSK
 
 #
 # List of companion chips / MFDs.