.nr_sources     = ARRAY_SIZE(clkset_audio2_list),
 };
 
-static struct clksrc_clk clk_audio0;
-static struct clksrc_clk clk_audio1;
-static struct clksrc_clk clk_audio2;
+static struct clksrc_clk clksrc_audio[] = {
+       {
+               .clk    = {
+                       .name           = "audio-bus",
+                       .id             = 0,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK1_AUDIO0,
+                       .enable         = s5pc100_sclk1_ctrl,
+               },
+               .sources = &clkset_audio0,
+               .reg_div = { .reg = S5PC100_CLKDIV4, .shift = 12, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC3, .shift = 12, .size = 3, },
+       }, {
+               .clk    = {
+                       .name           = "audio-bus",
+                       .id             = 1,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK1_AUDIO1,
+                       .enable         = s5pc100_sclk1_ctrl,
+               },
+               .sources = &clkset_audio1,
+               .reg_div = { .reg = S5PC100_CLKDIV4, .shift = 16, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC3, .shift = 16, .size = 3, },
+       }, {
+               .clk    = {
+                       .name           = "audio-bus",
+                       .id             = 2,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK1_AUDIO2,
+                       .enable         = s5pc100_sclk1_ctrl,
+               },
+               .sources = &clkset_audio2,
+               .reg_div = { .reg = S5PC100_CLKDIV4, .shift = 20, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC3, .shift = 20, .size = 3, },
+       },
+};
 
 static struct clk *clkset_spdif_list[] = {
-       &clk_audio0.clk,
-       &clk_audio1.clk,
-       &clk_audio2.clk,
+       &clksrc_audio[0].clk,
+       &clksrc_audio[1].clk,
+       &clksrc_audio[2].clk,
 };
 
 static struct clksrc_sources clkset_spdif = {
        .nr_sources     = ARRAY_SIZE(clkset_usbhost_list),
 };
 
-static struct clksrc_clk clk_spi0 = {
-       .clk    = {
-               .name           = "spi_bus",
-               .id             = 0,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK0_SPI0,
-               .enable         = s5pc100_sclk0_ctrl,
-
-       },
-       .sources = &clkset_spi,
-       .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 4, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 4, .size = 2, },
-};
-
-static struct clksrc_clk clk_spi1 = {
-       .clk    = {
-               .name           = "spi_bus",
-               .id             = 1,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK0_SPI1,
-               .enable         = s5pc100_sclk0_ctrl,
-       },
-       .sources = &clkset_spi,
-       .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 8, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 8, .size = 2, },
-};
-
-static struct clksrc_clk clk_spi2 = {
-       .clk    = {
-               .name           = "spi_bus",
-               .id             = 2,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK0_SPI2,
-               .enable         = s5pc100_sclk0_ctrl,
-       },
-       .sources = &clkset_spi,
-       .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 12, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 12, .size = 2, },
-};
-
-static struct clksrc_clk clk_uart_uclk1 = {
-       .clk    = {
-               .name           = "uclk1",
-               .id             = -1,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK0_UART,
-               .enable         = s5pc100_sclk0_ctrl,
-       },
-       .sources = &clkset_uart,
-       .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 0, .size = 3, },
-       .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 0, .size = 1, },
-};
-
-static struct clksrc_clk clk_audio0 = {
-       .clk    = {
-               .name           = "audio-bus",
-               .id             = 0,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK1_AUDIO0,
-               .enable         = s5pc100_sclk1_ctrl,
-       },
-       .sources = &clkset_audio0,
-       .reg_div = { .reg = S5PC100_CLKDIV4, .shift = 12, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC3, .shift = 12, .size = 3, },
-};
-
-static struct clksrc_clk clk_audio1 = {
-       .clk    = {
-               .name           = "audio-bus",
-               .id             = 1,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK1_AUDIO1,
-               .enable         = s5pc100_sclk1_ctrl,
-       },
-       .sources = &clkset_audio1,
-       .reg_div = { .reg = S5PC100_CLKDIV4, .shift = 16, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC3, .shift = 16, .size = 3, },
-};
-
-
-static struct clksrc_clk clk_audio2 = {
-       .clk    = {
-               .name           = "audio-bus",
-               .id             = 2,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK1_AUDIO2,
-               .enable         = s5pc100_sclk1_ctrl,
-       },
-       .sources = &clkset_audio2,
-       .reg_div = { .reg = S5PC100_CLKDIV4, .shift = 20, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC3, .shift = 20, .size = 3, },
-};
-
-static struct clksrc_clk clk_spdif = {
-       .clk    = {
-               .name           = "spdif",
-               .id             = -1,
-       },
-       .sources        = &clkset_spdif,
-       .reg_src = { .reg = S5PC100_CLKSRC3, .shift = 24, .size = 2, },
-};
-
-static struct clksrc_clk clk_lcd = {
-       .clk    = {
-               .name           = "lcd",
-               .id             = -1,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK1_LCD,
-               .enable         = s5pc100_sclk1_ctrl,
-       },
-       .sources = &clkset_lcd_fimc,
-       .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 12, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 12, .size = 2, },
-};
-
-static struct clksrc_clk clk_fimc0 = {
-       .clk    = {
-               .name           = "fimc",
-               .id             = 0,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK1_FIMC0,
-               .enable         = s5pc100_sclk1_ctrl,
-       },
-       .sources = &clkset_lcd_fimc,
-       .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 16, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 16, .size = 2, },
-};
-
-static struct clksrc_clk clk_fimc1 = {
-       .clk    = {
-               .name           = "fimc",
-               .id             = 1,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK1_FIMC1,
-               .enable         = s5pc100_sclk1_ctrl,
-       },
-       .sources        = &clkset_lcd_fimc,
-       .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 20, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 20, .size = 2, },
-};
-
-static struct clksrc_clk clk_fimc2 = {
-       .clk    = {
-               .name           = "fimc",
-               .id             = 2,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK1_FIMC2,
-               .enable         = s5pc100_sclk1_ctrl,
-       },
-       .sources = &clkset_lcd_fimc,
-       .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 24, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 24, .size = 2, },
-};
-
-static struct clksrc_clk clk_mmc0 = {
-       .clk    = {
-               .name           = "mmc_bus",
-               .id             = 0,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK0_MMC0,
-               .enable         = s5pc100_sclk0_ctrl,
-       },
-       .sources = &clkset_mmc,
-       .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 0, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 0, .size = 2, },
-};
-
-static struct clksrc_clk clk_mmc1 = {
-       .clk    = {
-               .name           = "mmc_bus",
-               .id             = 1,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK0_MMC1,
-               .enable         = s5pc100_sclk0_ctrl,
-       },
-       .sources = &clkset_mmc,
-       .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 4, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 4, .size = 2, },
-};
-
-static struct clksrc_clk clk_mmc2 = {
-       .clk    = {
-               .name           = "mmc_bus",
-               .id             = 2,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK0_MMC2,
-               .enable         = s5pc100_sclk0_ctrl,
-       },
-       .sources        = &clkset_mmc,
-       .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 8, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 8, .size = 2, },
-};
-
-static struct clksrc_clk clk_usbhost = {
-       .clk    = {
-               .name           = "usbhost",
-               .id             = -1,
-               .ctrlbit        = S5PC100_CLKGATE_SCLK0_USBHOST,
-               .enable         = s5pc100_sclk0_ctrl,
-       },
-       .sources = &clkset_usbhost,
-       .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 20, .size = 4, },
-       .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 20, .size = 2, },
+static struct clksrc_clk clksrc_clks[] = {
+       {
+               .clk    = {
+                       .name           = "spi_bus",
+                       .id             = 0,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK0_SPI0,
+                       .enable         = s5pc100_sclk0_ctrl,
+
+               },
+               .sources = &clkset_spi,
+               .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 4, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 4, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "spi_bus",
+                       .id             = 1,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK0_SPI1,
+                       .enable         = s5pc100_sclk0_ctrl,
+               },
+               .sources = &clkset_spi,
+               .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 8, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 8, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "spi_bus",
+                       .id             = 2,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK0_SPI2,
+                       .enable         = s5pc100_sclk0_ctrl,
+               },
+               .sources = &clkset_spi,
+               .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 12, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 12, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "uclk1",
+                       .id             = -1,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK0_UART,
+                       .enable         = s5pc100_sclk0_ctrl,
+               },
+               .sources = &clkset_uart,
+               .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 0, .size = 3, },
+               .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 0, .size = 1, },
+       }, {
+               .clk    = {
+                       .name           = "spdif",
+                       .id             = -1,
+               },
+               .sources        = &clkset_spdif,
+               .reg_src = { .reg = S5PC100_CLKSRC3, .shift = 24, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "lcd",
+                       .id             = -1,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK1_LCD,
+                       .enable         = s5pc100_sclk1_ctrl,
+               },
+               .sources = &clkset_lcd_fimc,
+               .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 12, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 12, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "fimc",
+                       .id             = 0,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK1_FIMC0,
+                       .enable         = s5pc100_sclk1_ctrl,
+               },
+               .sources = &clkset_lcd_fimc,
+               .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 16, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 16, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "fimc",
+                       .id             = 1,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK1_FIMC1,
+                       .enable         = s5pc100_sclk1_ctrl,
+               },
+               .sources        = &clkset_lcd_fimc,
+               .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 20, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 20, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "fimc",
+                       .id             = 2,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK1_FIMC2,
+                       .enable         = s5pc100_sclk1_ctrl,
+               },
+               .sources = &clkset_lcd_fimc,
+               .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 24, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 24, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "mmc_bus",
+                       .id             = 0,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK0_MMC0,
+                       .enable         = s5pc100_sclk0_ctrl,
+               },
+               .sources = &clkset_mmc,
+               .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 0, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 0, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "mmc_bus",
+                       .id             = 1,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK0_MMC1,
+                       .enable         = s5pc100_sclk0_ctrl,
+               },
+               .sources = &clkset_mmc,
+               .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 4, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 4, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "mmc_bus",
+                       .id             = 2,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK0_MMC2,
+                       .enable         = s5pc100_sclk0_ctrl,
+               },
+               .sources        = &clkset_mmc,
+               .reg_div = { .reg = S5PC100_CLKDIV3, .shift = 8, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC2, .shift = 8, .size = 2, },
+       }, {
+               .clk    = {
+                       .name           = "usbhost",
+                       .id             = -1,
+                       .ctrlbit        = S5PC100_CLKGATE_SCLK0_USBHOST,
+                       .enable         = s5pc100_sclk0_ctrl,
+               },
+               .sources = &clkset_usbhost,
+               .reg_div = { .reg = S5PC100_CLKDIV2, .shift = 20, .size = 4, },
+               .reg_src = { .reg = S5PC100_CLKSRC1, .shift = 20, .size = 2, },
+       }
 };
 
 /* Clock initialisation code */
        &clk_mout_onenand,
        &clk_mout_epll,
        &clk_mout_hpll,
-       &clk_spi0,
-       &clk_spi1,
-       &clk_spi2,
-       &clk_uart_uclk1,
-       &clk_audio0,
-       &clk_audio1,
-       &clk_audio2,
-       &clk_spdif,
-       &clk_lcd,
-       &clk_fimc0,
-       &clk_fimc1,
-       &clk_fimc2,
-       &clk_mmc0,
-       &clk_mmc1,
-       &clk_mmc2,
-       &clk_usbhost,
 };
 
 #define GET_DIV(clk, field) ((((clk) & field##_MASK) >> field##_SHIFT) + 1)
 
        for (ptr = 0; ptr < ARRAY_SIZE(init_parents); ptr++)
                s3c_set_clksrc(init_parents[ptr], true);
+
+       for (ptr = 0; ptr < ARRAY_SIZE(clksrc_audio); ptr++)
+               s3c_set_clksrc(clksrc_audio + ptr, true);
+
+       for (ptr = 0; ptr < ARRAY_SIZE(clksrc_clks); ptr++)
+               s3c_set_clksrc(clksrc_clks + ptr, true);
 }
 
 static struct clk *clks[] __initdata = {
        &clk_dout_d0_bus,
        &clk_dout_pclkd0,
        &clk_dout_apll2,
+       &clk_mout_apll.clk,
+       &clk_mout_mpll.clk,
+       &clk_mout_epll.clk,
+       &clk_mout_hpll.clk,
        &clk_mout_am.clk,
        &clk_dout_d1_bus,
+       &clk_mout_onenand.clk,
        &clk_dout_pclkd1,
        &clk_dout_mpll2,
        &clk_dout_cam,
        &clk_arm,
 };
 
-/* simplest change - will aggregate clocks later */
-static struct clksrc_clk *clks_src[] = {
-       &clk_mout_apll,
-       &clk_mout_mpll,
-       &clk_mout_onenand,
-       &clk_mout_epll,
-       &clk_spi0,
-       &clk_spi1,
-       &clk_spi2,
-       &clk_uart_uclk1,
-       &clk_audio0,
-       &clk_audio1,
-       &clk_audio2,
-       &clk_spdif,
-       &clk_lcd,
-       &clk_fimc0,
-       &clk_fimc1,
-       &clk_fimc2,
-       &clk_mmc0,
-       &clk_mmc1,
-       &clk_mmc2,
-       &clk_usbhost,
-};
-
 void __init s5pc100_register_clocks(void)
 {
        struct clk *clkp;
                }
        }
 
-       for (ptr = 0; ptr < ARRAY_SIZE(clks_src); ptr++)
-               s3c_register_clksrc(clks_src[ptr], 1);
+       s3c_register_clksrc(clksrc_audio, ARRAY_SIZE(clksrc_audio));
+       s3c_register_clksrc(clksrc_clks, ARRAY_SIZE(clksrc_clks));
 }